tree

二叉树的遍历

深度(纵向)优先在Python中一般使用列表,广度优先(横向)一般使用迭代# 617. Merge Two Binary Trees

235 Lowest Common Ancestor of a Binary Search Tree
236 Lowest Common Ancestor of a Binary Tree
找最近的树祖先问题(235是二叉搜索树BST)

235的思路就是,把左右两个值和root比较,可以用递归也可以不用(while root)~
236就复杂很多,是我写不出来的level了,只会用递归实现,我的理解是,从root开始,往左往右去找,是不是有p、q出现,有的话就赋值,最后判断是否为空。都不为空就最好啦,他们分开的时候(root)就是最近祖先,有一个为空,p、q应该在左or右一边,所以最先找到的那个节点就是最近祖先了(直接return left or right)。


236代码

深度

def depth(tree):
    if tree==None:
        return 0
    left,right=depth(tree.left),depth(tree.right)
    return max(left,right)+1

前序 根左右

def pre_order(tree):
    if tree==None:
        return
    print tree.data
    pre_order(tree.left)
    pre_order(tree.right)

中序 左根右

def depth(tree):
    if tree==None:
        return 0
    left,right=depth(tree.left),depth(tree.right)
    return max(left,right)+1

后序 左右根

def post_order(tree):
    if tree==None:
        return
    post_order(tree.left)
    post_order(tree.right)   
    print tree.data
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 树是n(n >= 0)个结点的有限集。n=0时称为空树。在任意一颗非空树中: 1、有且仅有一个特定的称为根(Roo...
    jtsky阅读 946评论 0 0
  • 二叉树的定义#### 二叉树是n(n>=0)个具有相同类型的元素的有限集合,当n=0时称为空二叉树,当n>0时,数...
    kylinxiang阅读 1,432评论 0 2
  • 二叉查找树(Binary Sort Tree) 我们之前所学到的列表,栈等都是一种线性的数据结构,今天我们将学习计...
    Cryptic阅读 5,036评论 1 19
  • 树 是由n(n>=1)个有限节点组成一个具有层次关系的集合。它具有以下特点:每个节点有零个或多个子节点;没有父节点...
    qil231阅读 301评论 0 0
  • 中国平板行业在目前可谓百花齐放,各家产品层出不穷,但是,稍微有关注数码的人,都知道我国的平板基本走的是低端策略,为...
    _JCh_唐Sir阅读 262评论 0 0