java实现二叉树的创建以及遍历

二叉树节点,需要包含:左节点指针,有节点指针,右节点的值。

package com.lb.test;
public class BinaryTree {
	
	class TreeNode{
		TreeNode leftNode;//节点的左孩子
		TreeNode rightNode;//节点右孩子
		String value;//节点值
		public TreeNode(String value,TreeNode leftNode,TreeNode rightNode){
			this.value = value;
			this.leftNode = leftNode;
			this.rightNode = rightNode;
		}
		public TreeNode getLeftNode() {
			return leftNode;
		}
		public void setLeftNode(TreeNode leftNode) {
			this.leftNode = leftNode;
		}
		public TreeNode getRightNode() {
			return rightNode;
		}
		public void setRightNode(TreeNode rightNode) {
			this.rightNode = rightNode;
		}
		public String getValue() {
			return value;
		}
		public void setValue(String value) {
			this.value = value;
		}
	}
	public static void main(String[] args) {
		BinaryTree  tree = new BinaryTree();
		 // 先序遍历。。。。。。。  
		TreeNode node = tree.init();
        System.out.println("**************************");  
  
        System.out.println("先序遍历。。。。。。。");  
  
        tree.qianxu(node);  
  
        System.out.println("");  
  
        // 中序遍历。。。。。。。  
  
        System.out.println("**************************");  
  
        System.out.println("中序遍历。。。。。。。");  
  
        tree.zhongxu(node);  
  
        System.out.println("");  
  
        // 后续遍历。。。。。。。  
  
        System.out.println("**************************");  
  
        System.out.println("后序遍历。。。。。。。");  
  
        tree.houxu(node);  
  
	}
	void printNode(TreeNode node){
		System.out.println(node.getValue());
	}
	/*
	 * 初始化树
	 */
	 public TreeNode init() {  
	        TreeNode D = new TreeNode("D", null, null);  
	        TreeNode H = new TreeNode("H", null, null);  
	        TreeNode I = new TreeNode("I", null, null);  
	        TreeNode J = new TreeNode("J", null, null);  
	        TreeNode P = new TreeNode("P", null, null);  
	        TreeNode G = new TreeNode("G", P, null);  
	        TreeNode F = new TreeNode("F", null, J);  
	        TreeNode E = new TreeNode("E", H, I);  
	        TreeNode B = new TreeNode("B", D, E);  
	        TreeNode C = new TreeNode("C", F, G);  
	        TreeNode A = new TreeNode("A", B, C);  
	        return A;  
	  
	    }  
	/*
	 * 前序遍历
	 */
	void qianxu(TreeNode node){
		this.printNode(node);
		if(node.leftNode!=null){
			this.qianxu(node.getLeftNode());
		}
		if(node.rightNode!=null){
			this.qianxu(node.getRightNode());
		}
	}
	/*
	 *中序遍历
	 */
	void zhongxu(TreeNode node){
		if(node.leftNode!=null){
			this.zhongxu(node.leftNode);
		}
		this.printNode(node);
		if(node.rightNode!=null){
			this.zhongxu(node.rightNode);
		}
	}
	/*
	 * 后序遍历
	 */
	void houxu(TreeNode node){
		if(node.rightNode!=null){
			this.houxu(node.rightNode);
		}
		if(node.leftNode!=null){
			this.houxu(node.leftNode);
		}
		this.printNode(node);
	}
}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值