https://leetcode-cn.com/problems/sum-root-to-leaf-numbers/

  1. function sumNumbers(root: TreeNode | null): number {
  2. let sum = 0
  3. const bst = (current: number, node: TreeNode) => {
  4. if (!node) return;
  5. if (!node.left && !node.right) {
  6. sum += current * 10 + node.val;
  7. return;
  8. }
  9. bst(current + node.val,node.left!)
  10. bst(current + node.val,node.right!)
  11. }
  12. bst(0, root!)
  13. return sum
  14. };

前序遍历: 根→左右 或者 根→右左

function preOrderTraverse(node: ITreeNode | null) {
    if (node == null) return
    // console.log(node.value)
    arr.push(node.value)
    preOrderTraverse(node.left)
    preOrderTraverse(node.right)
}

中序遍历:左 →根→右 或者 右→根→左

function inOrderTraverse(node: ITreeNode | null) {
    if (node == null) return
    inOrderTraverse(node.left)
    // console.log(node.value)
    arr.push(node.value)
    inOrderTraverse(node.right)
}

后序遍历:左右 →根或者 右左→根

function postOrderTraverse(node: ITreeNode | null) {
    if (node == null) return
    postOrderTraverse(node.left)
    postOrderTraverse(node.right)
    // console.log(node.value)
    arr.push(node.value)
}
class TreeNode {
  val: number
  left: TreeNode | null
  right: TreeNode | null

  constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
    this.val = (val === undefined ? 0 : val)
    this.left = (left === undefined ? null : left)
    this.right = (right === undefined ? null : right)
  }
}

function levelOrder(root: TreeNode): number[] {
  if (root == null) return []
  let curr = root
  let sol = []
  let queue = [curr]
  while (queue.length) {
    curr = queue.pop()!
      sol.push(curr.val)
    if (curr.left !== null) {
      queue.push(curr.left)
    }
    if (curr.right !== null) {
      queue.push(curr.right)
    }
  }
  return sol
}