二叉树的所有路径。
示例:
1、给定一个二叉树,返回所有从根节点到叶子节点的路径
2、说明:叶子节点是指没有子节点的节点
输入:
1
/ \
2 3
\
5
输出:["1->2->5","1->3"]
解释:所有根节点到叶子节点的路径为1->2->5,1->3
深度遍历
1、如果当前节点不为空,就将其值写入path
2、然后判断该节点是否有子节点,有左子节点,就遍历该节点;有有右子节点,就遍历该节点
3、否则就说明到达叶子节点,然后将当前的path插入列表中
# -*- coding:UTF-8 -*-
class TreeNode:
def __init__(self,x,left=None,right=None)
self.val = x
self.left = left
self.right = right
class Solution:
def binaryTreePaths(self,root):
def treePath(root,path):
if root:
path += root.val
if root.left or root.right:
path += "->"
treePath(root.left,path)
treePath(root.right,path)
else:
list1.append(path)
list1=[]
treePath(root,"")
return list1
node = TreeNode(1,TreeNode(2,None,TreeNode(5)),TreeNode(3))
Solution().binaryTreePaths(node)
print(Solution().binaryTreePaths(node))