228 字
1 分钟
二叉树的遍历
2024-09-15
无标签
非递归先序遍历
previsit(node,visitor) {
s := [node]
while Some(node) = s.pop() {
if node is null { continue }
visitor.visit(node)
s.push(node.right)
s.push(node.left)
}
}
非递归中序遍历
invisit(node, visitor) {
s := []
cur := node
while s.not_empty() or cur !== null {
if cur !== null {
s.push(cur)
cur = cur.left
} else {
node = s.pop()
visitor.visit(node)
cur = node.right
}
}
}
层次遍历
levelorder(node, visitor) {
q := [node]
while Some(node) = q.deqeque() {
if node is null { continue }
visitor.visit(node)
q.enqueue(node.left)
q.enqueue(node.right)
}
}
遍历序列构造二叉树
树有两个维度的信息,而序列是一维的
中序序列转(二叉)树
在正则二叉树的条件下能够转换,等价于中缀表达式的构造语法树问题中缀表达式求值
中序前序
中序后序
中序层次
层次序列的第一个节点是根,可以把中序序列划分成两个子树的中序序列…
线索化
…
