JAVA 重写二叉树

二叉树

定义:二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。
在这里插入图片描述

一.必有一个特定的称为根的结点(ROOT);

二.剩下的结点被分成互不相交的集合,这些集合的每一个都是树,被称作根的子树。

1.树的度------也就是宽度,简单的说就是结点的分支数。以组成该树各结点中最大的度作为该树的度。
2.树的深度------组成该树各结点的最大层次。
3.森林------指若干棵互不相交的树的集合。
4.有序树------指树中同层结点从左到右有次序排列,它们之间的次序不能互换,这样的树称为有序树,否则称为无序树。

public class Mytree {
    private Node root;
    
   //添加元素
    public void add(int x) {
   	 Node p=new Node();
   	 p.data=x;
   	 if(root==null)
   		 root=p;
   	 else
   		root.addNode(p);
    }
    
    public void xx() {
   	 if(root==null) return;
		    root.xianxu();
    }
    
    public void zx() {
   	 if(root==null) return;
   		root.zhongxu();
    }
    public void hx() {
   	 if(root==null) return;
   		root.houxu();
    }
    
   
}
public class Node {
    public int data;
    public Node leftNode;
    public Node rightNode;
//添加节点   
    //递归
    public void  addNode(Node t) {
   	 if(t.data<this.data) {
   		if(this.leftNode==null)
   			leftNode=t;
   		else
   		  leftNode.addNode(t);
   	 }else  {
   		 if(rightNode==null)
   			 rightNode=t;
   		 else 
   			 rightNode.addNode(t);
   	 }	
    }
    //先序
    public void xianxu() {
   	 System.out.print(data+" ");
   	 if(leftNode!=null)  leftNode.xianxu();	
   	 if(rightNode!=null) rightNode.xianxu();
    }
    //中序
    public void zhongxu() {
   	 if(leftNode!=null)  leftNode.zhongxu();
   	 System.out.print(data+" ");
   	 if(rightNode!=null) rightNode.zhongxu();
    }
    //后序
    public void houxu() {
   	 if(leftNode!=null)  leftNode.xianxu();
   	 if(rightNode!=null) rightNode.xianxu();
   	 System.out.print(data+" ");
    }
}

运行结果
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XKingBoss

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值