跳到主要内容

Tree Traversal(树遍历)

考纲要求

  • 19.2 Recursion 扩展到二叉树遍历

核心代码模板

中序遍历(2D 数组版本)

def InOrder(nodeIndex):
global ArrayNodes
if nodeIndex == -1:
return
InOrder(ArrayNodes[nodeIndex][0])
print(ArrayNodes[nodeIndex][1])
InOrder(ArrayNodes[nodeIndex][2])

中序遍历(OOP 版本)

def OutputInOrder(node):
if node is None:
return
OutputInOrder(node.GetLeft())
print(node.GetData())
OutputInOrder(node.GetRight())

调用方式

# 2D 数组版
InOrder(RootPointer)

# OOP 版
OutputInOrder(tree.GetRootNode())

三种遍历顺序

遍历方式顺序输出结果(示例树 10,5,15)
中序 InOrder左→根→右5, 10, 15(升序!)
前序 PreOrder根→左→右10, 5, 15
后序 PostOrder左→右→根5, 15, 10

Paper 4 只考中序遍历。

常见错误

  • 递归 base case 写错
  • 2D 数组版:用数据值而不是索引递归
  • 忘记 return(递归 base case 不 return 导致继续执行)