🎄树结构 — 递归

数组 和 链表, 就是所有数据结构的基础

[1, 2, 3, 4]

1 -> 2 -> 3 -> 4

  1. function() {
  2. this.val = val
  3. this.next = xxx
  4. }

二叉树是最简单的树结构
1
/ \
2 3

  1. function TreeNode(val) { // 链表结构的扩展
  2. this.val = val
  3. this.left = null
  4. this.right = null
  5. }

104

  1. // 先写子问题,再写终止条件
  2. if(root === null) {
  3. return
  4. }
  5. // 终止条件
  6. // 树最大深度 = 左子树的深度 和 右子树的深度,最大的那一个+1
  7. return Math.max(maxDepth(root.left), mexDepth(root.right))+1 (无限递归报错)

226 翻转二叉树

  1. if(root == null) {
  2. return root
  3. }
  4. // 1 递归子问题
  5. // 左右翻转 -- 解构赋值
  6. [root.left, root.right] = [invertTree(root.right), invertTree(root.left)]
  7. return root // 最后要记得 return root