JAVA语言递归方法创建二叉树

来源:互联网 发布:彩票计划软件 编辑:程序博客网 时间:2024/05/16 12:35

            采用递归的方法创建二叉树,可以灵活地创建任意形态的二叉树,这里用先序递归举例,中序和后序同理。

           首先贴一下Node节点类,大同小异。     

public class Node {private int data;private Node lchild;private Node rchild;public int getData() {return data;}public void setData(int data) {this.data = data;}public Node getLchild() {return lchild;}public void setLchild(Node lchild) {this.lchild = lchild;}public Node getRchild() {return rchild;}public void setRchild(Node rchild) {this.rchild = rchild;}public Node(int data, Node lchild, Node rchild) {super();this.data = data;this.lchild = lchild;this.rchild = rchild;}@Overridepublic String toString() {return "Node [data=" + data + ", lchild=" + lchild + ", rchild="+ rchild + "]";}}
                

          下面是递归创建二叉树的方法,代码很简单,为了灵活创建树,用户需要输入每个节点的值,当输入的值为0时,认为这个节点为空。

           

public  Node CreateInRecur(Scanner scanner){ int data = scanner.nextInt(); if(data==0)                     //输入data为0时,认为该节点为空节点 return null;     Node node =new Node(data,CreateInRecur(scanner),CreateInRecur(scanner));     return node;}
          比如要生成下面这颗树:

       

        用户输入的节点data先后为: 1 2 0 4 0 0 3 5 0 0 0

        通过先序遍历打印的方式,得到各个节点的toString如下,说明已经成功创建了树:

         

Node [data=1, lchild=Node [data=2, lchild=null, rchild=Node [data=4, lchild=null, rchild=null]], rchild=Node [data=3, lchild=Node [data=5, lchild=null, rchild=null], rchild=null]]Node [data=2, lchild=null, rchild=Node [data=4, lchild=null, rchild=null]]Node [data=4, lchild=null, rchild=null]Node [data=3, lchild=Node [data=5, lchild=null, rchild=null], rchild=null]Node [data=5, lchild=null, rchild=null]
          个人觉得这种递归方式创建树很灵活,但是代价就是需要用户手动输入每个节点以决定树的形态。

             
原创粉丝点击