Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

学习笔记

  1. 为什么和树相关的问题一般会使用递归的方式?
    1. 树的结构决定了树在大多数情况下是不适合用循环的方法: 如果树的每个节点除了有可以储存值的数据域,还有两个分别指向左孩子和右孩子的指针,这两个指针可以类比链表里的单指针,但是它们只能遍历子树的一个孩子一下的一些节点, 由于树的这种特性也就决定了树在大多数情况下是不适合用循环的方法去解决问题的;但是这里也有一种可能树的结构和链表单指针结构是一样的,就是树的所有节点的度(即孩子的个数只为1).
    2. 树的节点 + (左子树) + (右子树), 左子树 = 左子树节点 + (subleftroot.left) + (subleftroot.right), 右子树 = 右子树节点 + (subrightroot.left) + (subrightroot.right), 而所有节点都是同一属性的TreeNode, 这就是一个层层嵌套的结构,一个树是含有重复嵌套结构或者说重复子问题的结构。 3)在实际的一些应用场景,解决树的一些问题例如插入、删除操作需要先遍历再做访问,在这里可以使用循环的方法,但是要借助栈做缓存保留遍历的记忆,这个本质上还是和递归里层层走进嵌入的模式是一样的。