package F树.A002判断两颗二叉树是否完全相同;
import F树.A001求二叉树的高节点数中序遍历.TreeNode;
/**
* Description: <判断两颗二叉树是否完全相同>
* Author: mxdl
* Date: 2018/11/23
* Version: V1.0.0
* Update:
*/
public class MainAlgorithm {
public static void main(String[] args) {
TreeNode treeNode = new TreeNode(0);
TreeNode treeNode1 = new TreeNode(1);
TreeNode treeNode2 = new TreeNode(2);
TreeNode treeNode3 = new TreeNode(3);
TreeNode treeNode4 = new TreeNode(4);
TreeNode treeNode5 = new TreeNode(5);
treeNode.setLeftNote(treeNode1);
treeNode.setRightNote(treeNode2);
treeNode1.setLeftNote(treeNode3);
treeNode1.setRightNote(treeNode4);
treeNode3.setLeftNote(treeNode5);
// ===============================
TreeNode treeNode0 = new TreeNode(0);
TreeNode treeNode11 = new TreeNode(11);
TreeNode treeNode22 = new TreeNode(2);
TreeNode treeNode33 = new TreeNode(3);
TreeNode treeNode44 = new TreeNode(4);
TreeNode treeNode55 = new TreeNode(5);
treeNode0.setLeftNote(treeNode11);
treeNode0.setRightNote(treeNode22);
treeNode11.setLeftNote(treeNode33);
treeNode11.setRightNote(treeNode44);
treeNode33.setLeftNote(treeNode55);
boolean sameTree = isSameTree(treeNode, treeNode0);
System.out.println(sameTree);
}
//每个节点对应的值一样就可以
public static boolean isSameTree(TreeNode treeNode, TreeNode treeNode1) {
if (treeNode == null && treeNode1 == null) {
return true;
}
if (treeNode != null && treeNode1 == null) {
return false;
}
if (treeNode == null && treeNode1 != null) {
return false;
}
return (treeNode.getValue() == treeNode1.getValue())
&& isSameTree(treeNode.getLeftNote(), treeNode1.getLeftNote())
&& isSameTree(treeNode.getRightNote(), treeNode1.getRightNote());
}
}