二叉树 添加和查找

------------ 前几天闲下来时间做的一个二叉树的小例子-----------
(仅供参考)
package listsample;
public class TreeList {
/*
节点类.不作任何操作 只声明节点数据成员.
并初始化
*/
class TreeNode{
public int nodeValue;
public TreeNode rightChild;
public TreeNode leftChild;
public TreeNode(){
rightChild = null;
leftChild = null;
}
}
public TreeNode root;//声明一个节点
public TreeList(){
root = new TreeNode();//并创建
root.nodeValue=1000;//初始节点的值为1000
}
/*
*method addNode()
*添加节点
*/
public void addNode(int nodeValue){
TreeNode newNode = new TreeNode();//声明节点
newNode.nodeValue=nodeValue;//节点的值=传进来的值
TreeNode tempNode = root;//声明一个节点 把创建的节点的值给tempNode
while(true){
if(nodeValue>tempNode.nodeValue){//如果传进的值大于节点的值
if(tempNode.rightChild==null){//节点的右边子节点=于空的话
tempNode.rightChild=newNode;//让这个值放在节点的右边
break;//退出
}else{
tempNode = tempNode.rightChild;//如果节点右边右值的话. 把节点右边的值赋给创建的这个节点
continue;//继续循环
}
}
if(nodeValue<tempNode.nodeValue){//如果传入的值小于左边的节点值
if(tempNode.leftChild==null){//如果节点左边的值=空
tempNode.leftChild=newNode;//让这个传入的值放在节点的左边
break;
}else{
tempNode = tempNode.leftChild;//如果有值.把节点左边的值赋给这个节点
continue;//继续循环
}
}
}
}
/*
method display()
显示方法
*/
public void display(TreeNode root){//传入的是那个节点
System.out.println(root.nodeValue);//先把根节点的值显示出来
TreeNode tempNode = root;//把传入的节点值给这个节点
if(tempNode.rightChild==null&&tempNode.leftChild==null){//如果根节点的左右都为空 则退出
return;
}else{
if(tempNode.rightChild!=null){//如果节点的右边不等于空
display(tempNode.rightChild);//递归调用自身 显示节点的右边数据
}
if(tempNode.leftChild!=null){//同上
display(tempNode.leftChild);
}
}
}
/*
method selectTree()
查找节点方法
parmet a 是要查找的值
TreeNode 传入的是个节点
*/
public void selectTree(int a,TreeNode root){
TreeNode tempNode = root;//把传入的节点给这个节点
if(tempNode.nodeValue==a){//如果节点里的值等于传入的值
System.out.println("find number");//显示找到
return;//并退出
}else if(tempNode.leftChild==null&&tempNode.rightChild==null){//如果左右节点都为空
return ;//退出
}else{
if(tempNode.rightChild!=null){//节点的右边不为空的话
selectTree(a,tempNode.rightChild);//递归调用自身显示要查找右边的值
}
if(tempNode.leftChild!=null){//同上
selectTree(a,tempNode.leftChild);
}
}
}

public static void main(String[] args) {
TreeList treelist = new TreeList();
treelist.addNode(800);
treelist.addNode(900);
treelist.addNode(569);
treelist.addNode(240);
treelist.addNode(300);
treelist.addNode(169);
treelist.display(treelist.root);
System.out.println("----------------");
treelist.selectTree(300,treelist.root);
System.out.println("----------------");
treelist.selectTree(245,treelist.root);

}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值