Q18:数的子结构
来源:互联网 发布:满岛光 知乎 编辑:程序博客网 时间:2024/06/05 19:50
importBinaryTree.BinaryTreeNode;
//输入两个棵二叉树A和B,判断B是不是A的子结构。
publicclass Q18 {
publicstatic void main(String[] args) {
//创建二叉树A的结点
BinaryTreeNode root1 = newBinaryTreeNode();
BinaryTreeNode node1 = newBinaryTreeNode();
BinaryTreeNode node2 = newBinaryTreeNode();
BinaryTreeNode node3 = newBinaryTreeNode();
BinaryTreeNode node4 = newBinaryTreeNode();
BinaryTreeNode node5 = newBinaryTreeNode();
BinaryTreeNode node6 = newBinaryTreeNode();
//二叉树A结点间的结点关系
root1.leftNode = node1;
root1.rightNode = node2;
node1.leftNode = node3;
node1.rightNode = node4;
node4.leftNode = node5;
node4.rightNode = node6;
//对二叉树A赋值
root1.value = 8;
node1.value = 8;
node2.value = 7;
node3.value = 9;
node4.value = 2;
node5.value = 4;
node6.value = 7;
//构建二叉树B的结点
BinaryTreeNode root2 = newBinaryTreeNode();
BinaryTreeNode nodea = newBinaryTreeNode();
BinaryTreeNode nodeb = newBinaryTreeNode();
//二叉树B结点间的关系
root2.leftNode = nodea;
root2.rightNode = nodeb;
//二叉树结点的值
root2.value = 8;
nodea.value = 9;
nodeb.value = 2;
Q18 testQ18 = new Q18();
System.out.println("二叉树A是否包含二叉树B?");
if(testQ18.HasSubTree(root1, root2)==true){
System.out.println("是");
}
else {
System.out.println("否");
}
}
//判断二叉树A是否包含二叉树B,该方法就是寻找A中值等于B的根的值
publicstatic boolean HasSubTree(BinaryTreeNode root1,BinaryTreeNode root2){
boolean result=false;
if(root1 !=null && root2 != null){
//A和B根节点值相等时调用Tree1HaveTree2方法()
if(root1.value == root2.value){
result = Tree1HaveTree2(root1,root2);
}
//A的根节点值不等于B的根节点的值,则判断A的左子节点的值是否等于B的根节点的值
if(!result){
result = HasSubTree(root1.leftNode, root2);
}
//A的根节点值不等于B的根节点的值,则判断A的右子节点的值是否等于B的根节点的值
if(!result){
result = HasSubTree(root1.rightNode, root2);
}
}
return result;
}
publicstatic boolean Tree1HaveTree2(BinaryTreeNode root1,BinaryTreeNode root2){
if(root2 ==null)
returntrue;
if(root1 ==null)
returnfalse;
if(root1.value != root2.value)
returnfalse;
//在root1.value和root2.value相等的情况递归判断左右子节点的值,在左右子节点值都相等情况下才返回True
returnTree1HaveTree2(root1.leftNode, root2.leftNode)&&
Tree1HaveTree2(root1.rightNode, root2.rightNode);
}
}
- Q18:数的子结构
- Q18:树的子结构
- 【剑指offer】Q18:树的子结构
- 数的子结构
- 数的子结构
- 18、数的子结构
- 树——数的子结构
- 算法题/数的子结构
- 树------判断数A为数B的子结构
- 剑指offer(十七)数的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 树的子结构
- 【HDU】5777 - domino(贪心)
- Github 简明教程
- Python+MySQL用户加密存储验证系统(进阶)
- python中的*args和**kwargs详解
- java旅行第二站---javaSE第一天--奇数乘法表与坐电梯
- Q18:数的子结构
- 使用POSIX Threads进行多线程编程(一)——pthread基本知识
- react native
- Day3、C语言数据类型、变量的输入与输出、进制的转换
- 移动音乐社交体验分析
- 模仿新浪微博要点记录1
- tjut 4336
- jjckb
- 树状数组初学(2) ——杭电1166 敌兵布阵