层序遍历树是一种广度优先搜索的方法,它按照从上到下、从左到右的顺序访问树的每个节点。通常,我们使用队列来实现层序遍历。但是,如果要求不使用额外内存来实现层序遍历树,可以使用以下递归方法:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def level_order_traversal(root):
height = get_height(root) # 获取树的高度
for level in range(1, height+1):
print_level(root, level)
def get_height(node):
if node is None:
return 0
else:
left_height = get_height(node.left)
right_height = get_height(node.right)
return max(left_height, right_height) + 1
def print_level(node, level):
if node is None:
return
if level == 1:
print(node.val, end=" ")
elif level > 1:
print_level(node.left, level-1)
print_level(node.right, level-1)
以上代码中,level_order_traversal
函数用于调用print_level
函数打印树的每一层。get_height
函数用于获取树的高度。print_level
函数用于打印指定层的节点值。
使用这种方法,我们不需要额外的队列或列表来存储节点,而是利用递归的方式直接在打印时访问每个节点。
下一篇:不使用额外内存定义一个高维数组