class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def Tree(node=[]):#创建二叉树
if node is None or len(node)==0:#node初始为[]或者为None
return None
data=node.pop(0)
if data is None:#node中有None时
return
root=TreeNode(data)
root.left=Tree(node)
root.right=Tree(node)
return root
l=[1,2,3]
root=Tree(l)
def findNodes(node,nodes):
if not node:
return
nodes.append(node.val)
findNodes(node.left,nodes)
#上面执行完后node'=node.left将回溯到node
findNodes(node.right,nodes)
def findPaths(node,path,paths):#path存入根节点node类的加入顺序,即搜素顺序
if not node:
return
if not node.left and not node.right:#找到叶子节点后,将path中的所有类,即node根节点的val加到paths中
paths.append('->'.join([str(n.val) for n in path]))#有几个叶节点就append几次paths
return
path.append(node.left)
findPaths(node.left,path,paths)
path.pop()
path.append(node.right)
findPaths(node.right,path,paths)
path.pop()
nodes=[]
findNodes(root,nodes)
print(nodes)
path=[root]
paths=[]
findPaths(root,path,paths)
print(path)
print(paths)
【二叉树的所有路径】
最新推荐文章于 2025-10-16 16:09:45 发布
