打印二叉树最右侧节点其实是改自二叉树的层次遍历,多了一步,即输出每一层的末尾节点。如下题,输出最右侧节点结果应为[3,20,7]。

首先看二叉树的层次遍历,使用队列(queue)来存储二叉树的节点,

具体代码层次遍历实现:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
list = []
if root is None:return list
queue = [root]
while queue:
cur = []
for i in range(len(queue)):
node = queue.pop(0)
if node.left:
queue.append(node.left)
if node.right:
queue.append(node.right)
cur.append(node.val)
list.append(cur)
return list
打印出二叉树最右侧节点:
# 打印二叉树最右节点
def printRightNode(self, root):
queue = [root]
list = []
while queue:
res = []
# 控制二叉树每层的节点
for i in range(len(queue)):
node = queue.pop(0)
if node.lchild:
queue.append(node.lchild)
if node.rchild:
queue.append(node.rchild)
res.append(node.key)
list.append(res)
ans = []
for i in list:
# 取每层最后一个节点即为最右节点
ans.append(i[-1])
print(ans)

本文介绍了一种打印二叉树每一层最右侧节点的方法,通过队列实现层次遍历,最后输出每层的最后一个节点。代码示例清晰展示了算法实现过程。
1947

被折叠的 条评论
为什么被折叠?



