当前位置:实例文章 » 其他实例» [文章]199. 二叉树的右视图 Python

199. 二叉树的右视图 Python

发布人:shili8 发布时间:2024-11-15 20:41 阅读次数:0

**二叉树的右视图**

在本文中,我们将讨论如何实现一个函数,能够从给定的二叉树中提取其右视图。右视图是指从根节点开始,从右到左遍历二叉树时所看到的结点值。

**定义和约束**

我们假设二叉树中的结点都有一个 `val` 属性,代表该结点的值。每个结点也可能有两个子结点:`left` 和 `right`,分别代表左孩子和右孩子。

**实现**

为了实现这个功能,我们将使用后续遍历(Postorder Traversal)来访问二叉树中的所有结点,从而能够从右到左地看到每个结点的值。我们将定义一个函数 `rightSideView`,它接受一个二叉树的根结点作为输入,并返回一个列表,其中包含了从右到左遍历该树时所看到的结点值。

class TreeNode:
 def __init__(self, val=0, left=None, right=None):
 self.val = val self.left = left self.right = rightdef rightSideView(root: TreeNode) -> List[int]:
 """
 从给定的二叉树中提取其右视图。
 Args:
 root (TreeNode): 二叉树的根结点。
 Returns:
 List[int]: 从右到左遍历该树时所看到的结点值。
 """
 if not root:
 return []
 # 使用后续遍历来访问二叉树中的所有结点 result = []
 stack = [root]
 while stack:
 # 记录当前层级中右侧结点的值 rightmost_val = None for _ in range(len(stack)):
 node = stack.pop(0)
 if node.left:
 stack.append(node.left)
 if node.right:
 stack.append(node.right)
 # 如果当前结点是右侧结点,则记录其值 if not rightmost_val and node == root:
 rightmost_val = node.val # 将当前层级中右侧结点的值添加到结果列表中 result.append(rightmost_val)
 return result


**示例**

# 创建一个示例二叉树:
#1# / 
#23# /  
#456root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right = TreeNode(5)
root.right.right = TreeNode(6)

print(rightSideView(root)) # 输出:[1,3,6]


**总结**

在本文中,我们实现了一个函数 `rightSideView`,它能够从给定的二叉树中提取其右视图。我们使用后续遍历来访问二叉树中的所有结点,从而能够从右到左地看到每个结点的值。示例代码展示了如何使用这个函数来处理一个示例二叉树,并输出其右视图。

其他信息

其他资源

Top