【算法】判断输入是否是树的子数
来源:互联网 发布:linux 内存查询 编辑:程序博客网 时间:2024/06/05 20:02
题目描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
首先找到A中结点的值与B相等的结点,然后从这两个相同的结点出发,判断是否存在重合,若是返回true。否则,在树A的左右子树中寻找与B结点值相同的结点,以这些结点出发递归判断是否是A的子树。
public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { boolean flag=false; if(root1!=null&&root2!=null){ if(root1.val==root2.val){ flag =IsSubTree(root1,root2); } if(!flag){ flag= HasSubtree( root1.left, root2); } if(!flag){ flag= HasSubtree( root1.right, root2); } } return flag; } public boolean IsSubTree(TreeNode root1,TreeNode root2){//判断以root1和root2开头的子数是否重合 if(root1==null&&root2==null){ return true; }else if(root2==null)//B树已经为空,判断到最后一个结点都相同,不论A中是否有剩余,都是A的子树 return true; else if(root1==null)//A树判断到最后一个元素,但B还存在剩余结点,说明B不在A中,不是A的子树 return false; else if(root1.val==root2.val){ returnIsSubTree(root1.left,root2.left)&&IsSubTree(root1.right,root2.right); }else return false; } }
阅读全文
0 0
- 【算法】判断输入是否是树的子数
- 判断输入的数是否是素数
- java之判断输入的数是否是回文数
- 用JavaScript判断输入的是否是正浮点数
- 判断一个数是否是循环数的算法
- 输入两个二叉树A与B,判断B是否是A的子结构
- 判断输入一个数是否为素数的一般算法
- 树的子结构(输入两个二叉树A与B,判断B是否是A的子结构)
- 判断一个数是否是素数的两种算法
- 判断一个数是否是素数的算法
- 利用Java判断一个数是否是素数的算法
- 判断输入的二叉树是否是一致
- 判断输入的字符是否是数字
- 判断输入的是否是日期
- 判断输入的是否是中文。
- java判断输入的是否是自然数
- 判断输入的字符是否是emoji
- 判断输入的数字是否是质数
- git命令-切换分支
- OpenCV3.3更新日志
- WOJ1028-Injured Bishop Problem
- 文章标题
- MySql分库分表实践
- 【算法】判断输入是否是树的子数
- Guava的Ordering的一个API用法
- python 进阶指南
- js中的json
- Opencv中traincascade+LBP的训练过程及方法
- Debug进不了的原因及解决办法:
- 【目录索引】深入理解JVM索引
- MongoDB学习
- 两道算法问题