day9:翻转二叉树(简单)
思想:二叉树反转相当于对调每个枝叶上的元素,如果元素存在则进行交换,因此直接递归进行元素交换即可。
PS:不会有人向我一样这么傻吧,之前一直不知道给出的初始化代码中的工具方法是怎么用的,一直是以数组的方式去处理,后来才发现数组只是给出的一个顺序代码,我们想在本地进行测试,就需要按照下面new TreeNode
的方式进行创建对象,组装数据结构。
function TreeNode(val, left, right) {
this.val = val === undefined ? 0 : val;
this.left = left === undefined ? null : left;
this.right = right === undefined ? null : right;
}
var invertTree = function (root) {
if (root === null) return root;
let left = root.left,
right = root.right;
//判断节点是否存在->存在则进行交换
if (left && right) {
root.left = right;
root.right = left;
}
invertTree(left);
invertTree(right);
return root;
};
let t1 = new TreeNode(4),
t2 = new TreeNode(2),
t3 = new TreeNode(7),
t4 = new TreeNode(1),
t5 = new TreeNode(3),
t6 = new TreeNode(6),
t7 = new TreeNode(9);
t1.left = t2;
t1.right = t3;
t2.left = t4;
t2.right = t5;
t3.left = t6;
t3.right = t7;
// console.log(t1);
console.log(invertTree(t1));
网友评论