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)
  • 相关阅读:
    JVM之GC调优
    JVM的栈、堆
    SpringMVC及其HandlerMapping、HandlerInterceptor、HandlerAdapter等组件的原理解析
    静态代理、动态代理和CGLIB,SpringAOP中的代理
    cmd删除文件夹
    vue-router命名视图+路由嵌套
    Vue实现长按事件
    [SparkSQL] hive.exec.max.dynamic.partitions配置不起作用
    Excel分数转为百分数
    Hadoop YARN主资源调度算法
  • 原文地址:https://www.cnblogs.com/ohscar/p/3109601.html
Copyright © 2011-2022 走看看