tree

作者: 茶尽 | 来源:发表于2018-03-28 11:13 被阅读0次

二叉树的遍历

深度(纵向)优先在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

相关文章

网友评论

      本文标题:tree

      本文链接:https://www.haomeiwen.com/subject/qrdycftx.html