遍歷查詢二叉樹結構(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);

	}

}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章