🌲 tree 先序遍历叶子结点 🌳
在编程的世界里,二叉树是一个非常经典的数据结构,而叶子结点作为其中最特别的存在,往往承载着重要的信息。今天,让我们一起探索如何用代码实现按先序遍历输出二叉树的所有叶子结点吧!💡
首先,什么是先序遍历?简单来说,它是一种递归遍历方式:先访问根节点,再依次访问左子树和右子树。如果某个节点没有左右孩子,则说明它是叶子结点。这时,我们就可以将它的值记录下来,比如打印或者存储到数组中。🍃
假设你有一棵如下的二叉树:
```
A
/ \
B C
/ \ \
D E F
\
G
```
按照先序遍历的规则,输出的叶子结点顺序是:`D, E, G, F`。这样的结果可以通过编写递归函数轻松实现。例如,在Python中可以这样写:
```python
class TreeNode:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
def preorder_leaves(root):
if root is None:
return []
result = []
if not root.left and not root.right: 判断是否为叶子结点
result.append(root.val)
result += preorder_leaves(root.left)
result += preorder_leaves(root.right)
return result
示例构建二叉树并调用函数
root = TreeNode('A')
root.left = TreeNode('B')
root.right = TreeNode('C')
root.left.left = TreeNode('D')
root.left.right = TreeNode('E')
root.right.right = TreeNode('F')
root.left.right.right = TreeNode('G')
print(preorder_leaves(root)) 输出 ['D', 'E', 'G', 'F']
```
通过这段代码,我们可以优雅地完成任务,同时感受到编程带来的乐趣。✨ 如果你也对这种算法感兴趣,不妨动手试试吧!💪
版权声明:本文由用户上传,如有侵权请联系删除!