遍历查询二叉树结构(1)

二叉树结构用java表示如下:

package javatest.suanfa.Erchashu;

public class TreeNode {

	int val;
	TreeNode leftChild;
	TreeNode rightChild;

	public TreeNode(int value) {
		this.val = value;
	}

	public int getVal() {
		return val;
	}

	public void setVal(int val) {
		this.val = val;
	}

	public TreeNode getLeftChild() {
		return leftChild;
	}

	public void setLeftChild(TreeNode leftChild) {
		this.leftChild = leftChild;
	}

	public TreeNode getRightChild() {
		return rightChild;
	}

	public void setRightChild(TreeNode rightChild) {
		this.rightChild = rightChild;
	}

	

}

遍历二叉树的方法,递归

package javatest.suanfa.Erchashu;

public class Erchashulength {

	
	
	public static int leftlength = 0;
	public static int rightlength = 0;
	public static int length = 0;
	
	public static int dept(TreeNode node){
		if(node!=null){
			length = 1;
		}
		//如果下面的节点为null,或者左右几点为null,直接返回
		if((node==null)||(node.getLeftChild()==null&&node.getRightChild()==null)){
			return  leftlength>rightlength?leftlength:rightlength;
		//遍历左侧的树结构
		}else if(node.getLeftChild()!=null&&node.getRightChild()==null){
			leftlength++;
			return dept(node.getLeftChild());
			//遍历右侧的树结构
		}else if(node.getLeftChild()==null&&node.getRightChild()!=null){
			rightlength++;
			return dept(node.getRightChild());
			//如果2侧都有树
		}else{
			 rightlength++;
			 leftlength++;
			 dept(node.getLeftChild());
			 dept(node.getRightChild());
			return leftlength>rightlength?leftlength:rightlength;
		}
		
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		TreeNode node = new TreeNode(1);
		TreeNode node21 = new TreeNode(21);
		TreeNode node22 = new TreeNode(22);
		TreeNode node31 = new TreeNode(31);
		TreeNode node32 = new TreeNode(32);
		TreeNode node33 = new TreeNode(33);
		node.setLeftChild(node21);
		node.setRightChild(node22);
		node21.setLeftChild(node31);
		node21.setRightChild(node32);
		node22.setRightChild(node33);
		dept(node);
		System.out.println(length+"----------"+leftlength+"--"+rightlength);
		System.out.println(length+leftlength);

	}

}




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值