二叉树中序遍历

二叉树是一种排序的基本的数据结构,而如果要想为多个对象进行排序,那么就必须可以区分出对象的大小,那么就必须依靠Comparable接口完成。
二叉树的基本原理:取第一个元素作为根节点,之后每一个元素的排列要求:如果比根节点小的数据放在左子树,如果比根节点大的数据放在右子树,在输出的时候采用中序遍历(左-根-右)的方式完成。
但是,不管是何种方式操作,一定要记住,这种数据结构的实现永远都需要依靠节点类,而这个时候的节点类要保存两个子节点:左、右。

class BinaryTree{
	class Node{			// 声明一个节点类
		private Comparable data ;	// 保存具体的内容
		private Node left ;			// 保存左子树
		private Node right ;		// 保存右子树
		public Node(Comparable data){
			this.data = data ;
		}
		public void addNode(Node newNode){
			// 确定是放在左子树还是右子树
			if(newNode.data.compareTo(this.data)<0){	// 内容小,放在左子树
				if(this.left==null){
					this.left = newNode ;	// 直接将新的节点设置成左子树
				}else{
					this.left.addNode(newNode) ;	// 继续向下判断
				}
			}
			if(newNode.data.compareTo(this.data)>=0){	// 放在右子树
				if(this.right==null){
					this.right = newNode ;	// 没有右子树则将此节点设置成右子树
				}else{
					this.right.addNode(newNode) ;	// 继续向下判断
				}
			}
		}
		public void printNode(){	// 输出的时候采用中序遍历
			if(this.left!=null){
				this.left.printNode() ;	// 输出左子树
			}
			System.out.print(this.data + "\t") ;
			if(this.right!=null){
				this.right.printNode() ;
			}
		}
	};
	private Node root ;		// 根元素
	public void add(Comparable data){	// 加入元素
		Node newNode = new Node(data) ;	// 定义新的节点
		if(root==null){	// 没有根节点
			root = newNode ;	// 第一个元素作为根节点
		}else{
			root.addNode(newNode) ; // 确定是放在左子树还是放在右子树
		}
	}
	public void print(){
		this.root.printNode() ;	// 通过根节点输出
	}
};
public class ComparableDemo03{
	public static void main(String args[]){
		BinaryTree bt = new BinaryTree() ;
		bt.add(8) ;
		bt.add(3) ;
		bt.add(3) ;
		bt.add(10) ;
		bt.add(9) ;
		bt.add(1) ;
		bt.add(5) ;
		bt.add(5) ;
		System.out.println("排序之后的结果:") ;
		bt.print() ;
	}
};
全部评论

相关推荐

10-09 09:39
门头沟学院 C++
HHHHaos:这也太虚了,工资就一半是真的
点赞 评论 收藏
分享
jack_miller:我给我们导员说我不在这里转正,可能没三方签了。导员说没事学校催的时候帮我想办法应付一下
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务