万金流
初次使用博客园,目前感觉还不错。 不知不觉用了4年零4个月了,越来越喜欢博客园。

如题。

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

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

代码如下:

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+"\t");
        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

 

posted on 2020-11-20 11:35  万金流  阅读(744)  评论(0编辑  收藏  举报