求二叉树叶子结点到根节点的路径用栈实现
时间: 2024-03-18 10:16:23 浏览: 63
可以使用递归算法实现,每次递归时将当前节点加入栈,如果当前节点是叶子节点,则输出栈中元素。
具体实现如下:
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def leafToRoot(root):
if not root:
return []
if not root.left and not root.right:
return [[root.val]]
left_paths = leafToRoot(root.left)
right_paths = leafToRoot(root.right)
paths = []
for path in left_paths + right_paths:
path.append(root.val)
paths.append(path)
return paths
def leafToRootStack(root):
if not root:
return
stack = []
paths = leafToRoot(root)
for path in paths:
for val in path:
stack.append(val)
return stack
```
首先使用递归算法 `leafToRoot` 找到所有从叶子节点到根节点的路径,然后将路径上的节点依次加入栈中,最终返回栈。
阅读全文