1、构建二叉树非常的简单,只需要new出一些结点类,然后对他们的数据域赋值,最后用左右子树的关系连接所有结点,注意叶子结点的左右子树为NULL。
2、判断两个二叉树是否相等,需要判断他们的结点位置结点数,以及每个结点上的数据相等即可。
/**
* 构造二叉树
* @return 返回新构造的二叉树的根节点
*/
public static BITNode constructTree(){
BITNode root = new BITNode();
BITNode node1 = new BITNode();
BITNode node2 = new BITNode();
BITNode node3 = new BITNode();
BITNode node4 = new BITNode();
root.data = 6;
node1.data = 3;
node2.data = 7;
node3.data = 1;
node4.data = 9;
root.lchild = node1;
root.rchild = node2;
node1.lchild = node3;
node1.rchild = node4;
node2.lchild = node2.rchild = node3.lchild = node3.rchild = node4.lchild = node4.rchild = null;
return root;
}
/**
* 方法功能:判断两个二叉树是否相等
* @param root1 第一个二叉树
* @param root2 第二个二叉树
* @return
*/
public static boolean isEqual(BITNode root1,BITNode root2){
if(root1 == null && root2 == null){
return true;
}
if(root1 == null || root2 == null){
return false;
}
if(root1.data == root2.data){
return isEqual(root1.lchild,root2.lchild) && isEqual(root1.rchild,root2.rchild);
}else {
return false;
}
}
测试
public static void main(String[] args) {
BITNode root1 = constructTree();
BITNode root2 = constructTree();
boolean equal = isEqual(root1, root2);
if(equal){
System.out.println("这两棵树相等");
}else {
System.out.println("这两棵树不相等");
}
}