树的遍历Tree Traversals
❖对一个数据集中的所有数据项进行访问的操作称为“遍历Traversal”
❖线性数据结构中,对其所有数据项的访问比较简单直接按照顺序依次进行即可
❖树的非线性特点,使得遍历操作较为复杂
❖我们按照对节点访问次序的不同来区分3种遍历:
前序遍历(preorder):先访问根节点,再递归地前序访问左子树、最后前序访问右子树;
中序遍历(inorder):先递归地中序访问左子树,再访问根节点,最后中序访问右子树;
后序遍历(postorder):先递归地后序访问左子树,再后序访问右子树,最后访问根节点
树的遍历:递归算法代码
def preorder(tree):
if tree:
print(tree.getRootVal())
preorder(tree.getLeftChild())
preorder(tree.getRightChild())
def postorder(tree):
if tree is not None:
postorder(tree.getLeftChild())
postorder(tree.getRightChild())
print(tree.getRootVal())
def inorder(tree):
if tree is not None:
inorder(tree.getLeftChild())
print(tree.getRootVal())
inorder(tree.getRightChild())