zoukankan      html  css  js  c++  java
  • 常用二叉树类(含初始化)

    如题。

    定义一个二叉树根节点,可“拎起”一整棵二叉树。

    定义可以返回一个默认的和用户任意输入的二叉树。

    代码如下:

    public class MyBinaryNode
    {
        String v;
        MyBinaryNode left,right;
        public MyBinaryNode getDefaultNode()
        {
            MyBinaryNode[] a=new MyBinaryNode[7];
            for (int i = 0; i < a.length; i++)
            {
                a[i]=new MyBinaryNode();
                a[i].v=""+(char)(97+i);
            }
            for(int i=0;i<=(a.length+1)/2-2;i++)
            {
                a[i].left=a[2*i+1];
                a[i].right=a[2*i+2];
            }
            return a[0];        
        }
        public MyBinaryNode getInputNode()
        {
            Scanner scan=new Scanner(System.in);
            String myinput="";
            MyBinaryNode[] a;
            System.out.println("按层顺序输入二叉树各元素(#为空)");
            System.out.println("例:ABCDE#F");
            myinput=scan.next();
            a=new MyBinaryNode[myinput.length()];
            for (int i = 0; i < a.length; i++)
            {
                a[i]=new MyBinaryNode();
                a[i].v=myinput.substring(i,i+1);
            }
            for(int i=0;i<=(a.length+1)/2-2;i++)
            {
                if(!a[2*i+1].v.equals("#"))
                {
                    a[i].left=a[2*i+1];
                }
                if(!a[2*i+2].v.equals("#"))
                {
                    a[i].right=a[2*i+2];
                }
            }
            scan.close();
            return a[0];        
        }
        public void front()//递归-前序遍历
        {
            System.out.print(v+"	");
            if(left!=null)
            {
                left.front();
            }
            if(right!=null)
            {
                right.front();
            }
        }
    }

    调用方法:

    public static void main(String[] args)
        {
            MyBinaryNode bt=new MyBinaryNode();
            bt=bt.getDefaultNode();
            bt.front();
            System.out.println();
            bt=bt.getInputNode();
            bt.front();
        }

    运行结果:

    a    b    d    e    c    f    g    
    按层顺序输入二叉树各元素(#为空)
    例:ABCDE#F
    ABCDE#F
    A    B    D    E    C    F
  • 相关阅读:
    Angular语法(三)——数据绑定
    Angular语法(二)——模板语法
    Angular语法(一)——展示数据
    Angular常用指令
    windows下启动redis
    WPF实现弹幕
    微信获得用户信息
    拉普拉斯变换
    Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering
    Python之并行
  • 原文地址:https://www.cnblogs.com/wanjinliu/p/13968623.html
Copyright © 2011-2022 走看看