java binarytreenode_Java中的BinaryTree实现

小编典典

我已经尝试过用您的方式解决问题,并且将解决方案粘贴到下面。.尽管我没有对它进行彻底的测试,所以在某些情况下它可能会失败。.但是我已经针对一种情况进行了测试。请让我知道它在某些情况下是否失败。我将感谢其他人的帮助,以使这个答案更好。我同意,该解决方案不是编码二叉树的最理想方法,但是如果有人只是练习,它不会以这种方式受到损害。

import java.util.Scanner;

class Node

{

Integer data;

Node left;

Node right;

Node()

{

data = null;

left = null;

right = null;

}

}

class BinaryTree

{

Node head;

Scanner input = new Scanner(System.in);

BinaryTree()

{

head = null;

}

public void createNode(Node temp,Node newnode)

{

if(head==null)

{

System.out.println("No value exist in tree, the value just entered is set to Root");

head = newnode;

return;

}

if(temp==null)

temp = head;

System.out.println("where you want to insert this value, l for left of ("+temp.data+") ,r for right of ("+temp.data+")");

char inputValue=input.next().charAt(0);

if(inputValue=='l'){

if(temp.left==null)

{

temp.left=newnode;

System.out.println("value got successfully added to left of ("+temp.data+")");

return;

}else {

System.out.println("value left to ("+temp.data+") is occupied 1by ("+temp.left.data+")");

createNode(temp.left,newnode);

}

}

else if(inputValue=='r')

{

if(temp.right==null)

{

temp.right=newnode;

System.out.println("value got successfully added to right of ("+temp.data+")");

return;

}else {

System.out.println("value right to ("+temp.data+") is occupied by ("+temp.right.data+")");

createNode(temp.right,newnode);

}

}else{

System.out.println("incorrect input plz try again , correctly");

return;

}

}

public Node generateTree(){

int [] a = new int[10];

int index = 0;

while(index

a[index]=getData();

index++;

}

if(a.length==0 ){

return null;

}

Node newnode= new Node();

/*newnode.left=null;

newnode.right=null;*/

return generateTreeWithArray(newnode,a,0);

}

public Node generateTreeWithArray(Node head,int [] a,int index){

if(index >= a.length)

return null;

System.out.println("at index "+index+" value is "+a[index]);

if(head==null)

head= new Node();

head.data = a[index];

head.left=generateTreeWithArray(head.left,a,index*2+1);

head.right=generateTreeWithArray(head.right,a,index*2+2);

return head;

}

public Integer getData()

{

System.out.println("Enter the value to insert:");

return (Integer)input.nextInt();

}

public void print()

{

inorder(head);

}

public void inorder(Node node)

{

if(node!=null)

{

inorder(node.left);

System.out.println(node.data);

inorder(node.right);

}

else

return;

}

}

public class BinaryTreeWorker

{

static BinaryTree treeObj = null;

static Scanner input = new Scanner(System.in);

public static void displaymenu()

{

int choice;

do{

System.out.print("\n Basic operations on a tree:");

System.out.print("\n 1. Create tree \n 2. Insert \n 3. Search value \n 4. print list\n 5. generate a tree \n Else. Exit \n Choice:");

choice = input.nextInt();

switch(choice)

{

case 1:

treeObj = createBTree();

break;

case 2:

Node newnode= new Node();

newnode.data = getData();

newnode.left=null;

newnode.right=null;

treeObj.createNode(treeObj.head,newnode);

break;

case 3:

//searchnode();

break;

case 4:

System.out.println("inorder traversal of list gives follows");

treeObj.print();

break;

case 5:

Node tempHead = treeObj.generateTree();

System.out.println("inorder traversal of list with head = ("+tempHead.data+")gives follows");

treeObj.inorder(tempHead);

break;

default:

return;

}

}while(true);

}

public static Integer getData()

{

System.out.println("Enter the value to insert:");

return (Integer)input.nextInt();

}

public static BinaryTree createBTree()

{

return new BinaryTree();

}

public static void main(String[] args)

{

displaymenu();

}

}

[更新] :更新了代码以使用数组生成二叉树。这将减少用户交互。

2020-07-28

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值