https://leetcode-cn.com/problems/sum-root-to-leaf-numbers/
function sumNumbers(root: TreeNode | null): number {let sum = 0const bst = (current: number, node: TreeNode) => {if (!node) return;if (!node.left && !node.right) {sum += current * 10 + node.val;return;}bst(current + node.val,node.left!)bst(current + node.val,node.right!)}bst(0, root!)return sum};
前序遍历: 根→左右 或者 根→右左
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
}
