本文主要是介绍6.10二叉树的所有路径(LC257-E,不太会),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
算法:
前序遍历:
因为要让父节点指向孩子节点,才能输出路径。
递归与回溯相辅相成,只要有递归,就一定有回溯。
举个例子理解一下:
中:先push入1
左:再Push入2
右:再Push入5 \\1->2->5
回溯:
pop 5
pop 2
到1的时候,再push入3 \\1->3
正确代码(还是不太懂):
`cur
`(当前正在访问的节点)、`path
`(用于存储当前路径的列表)和`result
`(用于存储最终结果的列表)。
# # Definition for a binary tree node.
# # class TreeNode(object):
# # def __init__(self, val=0, left=None, right=None):
# # self.val = val
# # self.left = left
# # self.right = right
class Solution(object):def binaryTreePaths(self, root):""":type root: TreeNode:rtype: List[str]"""result = []path = []if root == None:return resultelse:self.travasal(root, path, result)return resultdef travasal(self, cur, path, result):#`cur`(当前正在访问的节点)#`path`(用于存储当前路径的列表)#`result`(用于存储最终结果的列表)#中:把cur加入path中path.append (cur.val)#首先判断是否为叶子节点if cur.left == None and cur.right == None:paths = "->".join(map(str,path))result.append(paths)#无返回值return #左if cur.left != None:self.travasal(cur.left, path, result)path.pop()#回溯#右if cur.right != None:self.travasal(cur.right, path, result)path.pop()#回溯
这篇关于6.10二叉树的所有路径(LC257-E,不太会)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!