const binaryTree = {
val: 1,
left: {
val: 2,
left: {
val: 4,
},
right: {
val: 5,
}
},
right: {
val: 3,
left: {
val: 6,
left: {
val: 8
}
},
right: {
val: 7,
}
}
}
- 先序遍历
const preorder = (root) => {
if(!root) return
const stack = [root]
while(stack.length) {
const n = stack.pop()
console.log(n.val)
if (n.right) stack.push(n.right)
if (n.left) stack.push(n.left)
}
}
preorder(binaryTree)
- 中序遍历
const inorder = (root) => {
if (!root) return
const stack = []
let p = root
while(stack.length || p) {
while(p) {
stack.push(p)
p = p.left
}
const n = stack.pop()
console.log(n.val)
p = n.right
}
}
inorder(binaryTree)
- 后序遍历
const postorder = (root) => {
if (!root) return
const stack = [root]
const res = []
while(stack.length) {
const n = stack.pop()
res.push(n)
if (n.left) stack.push(n.left)
if (n.right) stack.push(n.right)
}
while(res.length) {
const n = res.pop()
console.log(n.val)
}
}
postorder(binaryTree)
发表回复