📅  最后修改于: 2023-12-03 15:39:42.004000             🧑  作者: Mango
在二叉树中,每一层中除最左边节点之外的所有节点可以通过广度优先搜索算法遍历到。这个算法可以使用队列来实现。
具体实现可以按照以下步骤完成:
以下是代码实现:
from collections import deque
def print_except_leftmost(root):
if not root:
return
queue = deque()
queue.append(root)
while queue:
size = len(queue)
is_leftmost = True
for i in range(size):
node = queue.popleft()
if is_leftmost:
print(node.val, end='')
is_leftmost = False
else:
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
if i < size - 1:
print(f'->{node.val}', end='')
print('')
代码中使用了 deque
类型的队列,它提供了高效的队列操作。在每一层的遍历中,使用 is_leftmost
变量来判断当前节点是否为最左边节点,并确保只有最左边节点被打印。
我们可以使用以下方式来测试这个函数:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
tree = TreeNode(1,
TreeNode(2,
TreeNode(4),
None),
TreeNode(3,
TreeNode(5),
TreeNode(6)))
print_except_leftmost(tree)
这将输出如下内容:
1
2->3
4->5->6
以上代码片段均按照 markdown 格式进行了标注。