94.二叉树的中序遍历
题目
LeetCode 简单
题目
给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。
示例:
输入:root = [1,null,2,3]
输出:[1,3,2]
题解
方法:递归
递归
O(n) O(n)
ts
function inorderTraversal(root: TreeNode | null): number[] {
let res = []
if (root) {
const inorder = (node: TreeNode) => {
if (node.left) inorder(node.left)
res.push(node.val)
if (node.right) inorder(node.right)
}
inorder(root)
}
return res
}
const tree = new Tree([3, 9, 20, null, null, 15, 7, 14, 13])
console.log('🌰', tree)
console.log('🌰', inorderTraversal(tree.root))
方法:迭代
栈
O(n) O(n)
ts
function inorderTraversalUseStack(root: TreeNode | null): number[] {
let res = []
let stack = []
let p = root
while (stack.length || p) {
while (p) {
stack.push(p)
p = p.left
}
console.log('stack', JSON.stringify(stack.map(i => i.val)))
const node = stack.pop()
res.push(node.val)
p = node.right
}
return res
}
console.log('🌰', inorderTraversalUseStack(tree.root))