首页 > 其他分享 >二叉树-257二叉树的所有路径带回溯思想

二叉树-257二叉树的所有路径带回溯思想

时间:2023-09-05 15:12:17浏览次数:41  
标签:right cur self result 回溯 path left 257 二叉树

257. 二叉树的所有路径

 1 # Definition for a binary tree node.
 2 # class TreeNode:
 3 #     def __init__(self, val=0, left=None, right=None):
 4 #         self.val = val
 5 #         self.left = left
 6 #         self.right = right
 7 class Solution:
 8     def binaryTreePaths(self, root: TreeNode) -> List[str]:
 9         path = ''
10         result = []
11         if not root: return result
12         self.traversal(root, path, result)
13         return result
14     
15     def traversal(self, cur: TreeNode, path: str, result: List[str]) -> None:
16         path += str(cur.val)
17         # 若当前节点为leave,直接输出
18         if not cur.left and not cur.right:
19             result.append(path)
20             #return
21 
22         if cur.left:
23             # + '->' 是隐藏回溯
24             #,貌似没有看到回溯的逻辑,其实不然,回溯就隐藏在traversal(cur->left, path + "->", result);中的 path + "->"。 每次函数调用完,path依然是没有加上"->" 的,这就是回溯了。
25             self.traversal(cur.left, path + '->', result)
26         
27         if cur.right:
28             self.traversal(cur.right, path + '->', result)

 

 

标签:right,cur,self,result,回溯,path,left,257,二叉树
From: https://www.cnblogs.com/wuyijia/p/17679695.html

相关文章

  • day21 - 二叉树part07
    530. 二叉搜索树的最小绝对差详解/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),right(nullptr){}*TreeNode(intx):val(x),left......
  • 二叉树
    节点(Node):树形结构中的基本单位,可以表示数据元素或对象。节点可以包含一个或多个子节点。根节点(RootNode):树的顶层节点,它没有父节点,是整个树的起点。子节点(ChildNode):树中每个节点都可以有零个或多个子节点,子节点是位于其父节点下方的节点。父节点(ParentNode):每个节点(除......
  • 用递归和非递归两种方式实现二叉树的先序遍历(前序遍历)
    一、分析先序遍历(前序遍历)遍历顺序为:根、左、右。二、递归实现publicclassNode{ publicintvalue;publicNodeleft;publicNoderight;publicNode(intdata){ this.value=data;}}publicvoidpreOrderRecur(Nodehead){ if(head==null){ return......
  • 《剑指Offer》-68-二叉树的最近公共祖先
    二叉搜索树 TreeNode*lowestCommonAncestor(TreeNode*root,TreeNode*p,TreeNode*q){ //如果p、q一定存在,那么root就一定不是空指针 TreeNode*traverse=root; while(true){ if(p->val<traverse->val&&q->val<traverse->val)traverse=tra......
  • leetcode226 翻转二叉树——简单
      #Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0,left=None,right=None):#self.val=val#self.left=left#self.right=rightclassSolution:definvertTree(self,root):......
  • 线索二叉树,树和森林
    线索二叉树,树和森林线索二叉树为什么要研究线索二叉树?二叉链表存储的二叉树无法找到某个结点的在某种遍历序列里面的前驱和后继结点.我们利用二叉链表中的指针与来寻找特定遍历序列的二叉树结点的前驱和后继根据前面的所学的内容,二叉链表中有n+1个空指针域,我们要把这些......
  • day20 - 二叉树 part06
    654. 最大二叉树详解/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),right(nullptr){}*TreeNode(intx):val(x),left(nullptr),r......
  • 数据结构与算法——二叉树+带你实现表达式树(附源码)
    ......
  • 对动态 DP 和全局平衡二叉树的一点补充解释
    说明:最近在帮高中竞赛教练写讲义,这是本人对讲义中动态DP内容的补充解释(因为主要是对知识点的理解,不太容易用通用的语言表述,也不适合作为讲义内容供读者阅读,所以用的是补充注释的形式)。写的比较抽象也比较初等,仅供意会。1.为什么用矩阵表示转移我们先从一般的角度,用映射的语言......
  • 回溯(backstracking)
    回溯(抽象成树型结构、一般无返回值backtracking)1.理论基础回溯和递归相辅相成一般递归函数下面的部分就是回溯的逻辑默认是纯暴力(后续可以剪枝)应用:组合【没有顺序】切割子集排列【有顺序】棋盘N皇后解数独回溯法都可以抽象为一个树型结构树的宽度:集合大......