"""
问题:二叉树和为某一值的路径
输入一颗二叉树的根节点和一个整数,
按字典序打印出二叉树中结点值的和为输入整数的所有路径。
路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。
思路:
1.利用栈的思想,先进后出
2.叶节点说明该节点既没有左子树也没有右子树
"""
# -*- coding:utf-8 -*-
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
# 返回二维列表,内部每个列表表示找到的路径
def FindPath(self, root, expectNumber):
# write code here
if not root:
return []
stack = []
result = []
stack.append((root, [root.val]))
while stack:
node, path = stack.pop()
if not node.left and not node.right and sum(path) == expectNumber:
result.append(path)
if node.right:
stack.append((node.right, path + [node.right.val]))
if node.left:
stack.append(((node.left, path + [node.left.val])))
return result
剑指offer 之二叉树和为某一值的路径
最新推荐文章于 2024-07-25 19:28:17 发布