求二叉树的所有叶子结点到根结点的路径及路径长度的代码
时间: 2023-05-31 20:07:12 浏览: 104
以下是求二叉树的所有叶子结点到根结点的路径及路径长度的 Python 代码:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def leaf_to_root_paths(root):
def dfs(node, path, paths):
if not node:
return
path.append(node.val)
if not node.left and not node.right:
paths.append((list(path)[::-1], len(path) - 1))
else:
dfs(node.left, path, paths)
dfs(node.right, path, paths)
path.pop()
paths = []
dfs(root, [], paths)
return paths
```
其中,`root` 是二叉树的根节点,函数 `leaf_to_root_paths` 返回一个列表,列表中的每个元素都是一个二元组,分别表示一个叶子节点到根节点的路径(从叶子节点开始),以及该路径长度。例如:
```python
root = TreeNode(1, TreeNode(2, TreeNode(4), TreeNode(5)), TreeNode(3, TreeNode(6), TreeNode(7)))
print(leaf_to_root_paths(root)) # [([4, 2, 1], 2), ([5, 2, 1], 2), ([6, 3, 1], 2), ([7, 3, 1], 2)]
```
这表示四个叶子节点到根节点的路径分别为 `[4, 2, 1]`、`[5, 2, 1]`、`[6, 3, 1]`、`[7, 3, 1]`,路径长度分别为 2。
阅读全文