数据解构和算法

57.反转二叉树

2022-02-18  本文已影响0人  wo不是黄蓉

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));
上一篇 下一篇

猜你喜欢

热点阅读