校招编程题(三) 二叉树问题之求子节点的最近公共父节点

来源:互联网 发布:英文小说阅读软件 编辑:程序博客网 时间:2024/06/03 22:52

摘要

对某一满二叉排序树,输入四个数字。第1个为树的高度,后面3个为节点标号。求此三个节点的最近公共父节点。


import java.util.Scanner;/**************************************                                 **  @Description 对某一满二叉排序树,输入四个数字。**               第1个为树的高度,后面3个为节点标号。求此三个节点的最大公共父节点                         **                                 **  @author      何明胜                              **                                **  @Date 2017-04-03  22:13:26     **                                **  @Copyright Copyright (c) 2017  **                                 ************************************/public class InTraToLastestParent {    int k;//二叉树的高度    int []arr = new int[3];//获取的三个节点    public void init(){        Scanner scanner = new Scanner(System.in);        //读取数据        k=scanner.nextInt();        for(int i=0;i<3;i++){            arr[i] = scanner.nextInt();        }        //开始寻找        find(Math.pow(2, k-1), k-1);    }    /*     * 寻找函数     * 1.从根结点开始,判断当前是哪个节点是否同时大于或者小于此节点     * 2.若同时大于,则当前根节点的右子节点复制为当前根节点,继续第1步     * 3.若同时小于,则当前根节点的左子节点赋值为当前根节点,继续第1步     * 4.若不满足上述两个条件,表明此节点为三个节点的最大公共父节点,输出此节点的值     */    public void find(double value,int k){        if(arr[0] >= value && arr[1] >= value && arr[2] >= value){            find(value+Math.pow(2, k-1), k-1);        }        else if(arr[0] <= value && arr[1] <= value && arr[2] <= value){            find(value-Math.pow(2,k-1), k-1);        }        else{            System.out.println((int)value);        }       }    public static void main(String []args){        InTraToLastestParent inTraToLastestParent = new InTraToLastestParent();//初始化        inTraToLastestParent.init();//执行函数    }}
阅读全文
0 0
原创粉丝点击