zoukankan      html  css  js  c++  java
  • 二叉树,给定任意两个节点,寻找最近的父节点

    网上看到的一个题目: 给定一棵二叉树,以及两个节点,请找出它们最近的父节点。

    所谓最近,就是“血缘关系”最近啦,这个你懂得~~

    用python写了一下,感觉还不坏:


    class
     node:
        def __init__( self , data, left, right):
            self .data = data
            self .left = left
            self .right = right
       
    def is_leaf(n):
        if n.left == None and n.right == None:
            return True
        return False
       
    def find_parent(n, data1, data2):
        if n == None :
            return 0
       
        if is_leaf(n):
            if n.data == data1:
                return 1
            elif n.data == data2:
                return 2
            else :
                return 0
       
        lr = find_parent(n.left, data1, data2)
        rr = find_parent(n.right, data1, data2)
           
        if lr + rr == 3:
            print "find node : " + str(n.data)
           
        return lr + rr
     
    def print_tree(t):
        if t == None :
            return
       
        print t.data
        print_tree(t.left)
        print_tree(t.right)
     
    tree = node(1, NoneNone )
    tree.left = node(2, NoneNone )
    tree.right = node(3, NoneNone )
    tree.left.left = node(4, NoneNone )
    tree.left.right = node(5, NoneNone )
    tree.left.left.left = node(6, NoneNone )
    tree.left.left.right = node(7, NoneNone )
    tree.right.left = node(8, NoneNone )
    tree.right.right = node(9, NoneNone )
     
    print_tree(tree)
    print "------------------"
    find_parent(tree, 7, 6)
    print "------------------"
    find_parent(tree, 7, 5)
  • 相关阅读:
    Django
    python django框架学习
    Http Header里的Content-Type
    Python 头部 #!/usr/bin/python 和 #!/usr/bin/env python的区别
    关于“编译型语言”和“解释性语言”的区别
    Axure XMind整理交互思路
    异常处理
    re模块
    模块
    正则表达式**************************
  • 原文地址:https://www.cnblogs.com/ohscar/p/3109601.html
Copyright © 2011-2022 走看看