树
遍历:前序遍历 中序遍历 后序遍历 (根节点的位置)
例如 后序遍历 :先访问左子树,然后访问右子树, 最后访问根节点
(树,一棵树,区别于这棵树的根节点,例如 5的左子树是 B(124)这棵树,其中4算B树的根节点)
进阶遍历:
遍历结果:
先序遍历:ABDFCEGHI
中序遍历:BFDACHGIE
后序遍历:FDBHIGECA
遍历实现:
评价:
递归:比较好理解,是根据遍历定义实现起来最顺畅的方法
迭代:比较考察对栈,树的理解,试试
迭代法,前序遍历
def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
if not root:
return []
stack = [root]
output = []
while stack:
node = stack.pop()
output.append(node.val)
if node.right: # 栈先进后出,所以右先进,左先出
stack.append(node.right)
if node.left:
stack.append(node.left)
return output
层序遍历