二叉树结构用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);
}
}