Subtree(java)
来源:互联网 发布:淘金果园农场游戏源码 编辑:程序博客网 时间:2024/06/05 03:53
Subtree
You have two every large binary trees: T1
, with millions of nodes, and T2
, with hundreds of nodes. Create an algorithm to decide if T2
is a subtree of T1
.
Yes
Example
T2 is a subtree of T1 in the following case:
1 3 / \ / T1 = 2 3 T2 = 4 / 4
T2 isn't a subtree of T1 in the following case:
1 3 / \ \T1 = 2 3 T2 = 4 / 4
package campus.lintCode;public class SubTree {public static void main(String[] args) {TreeNode treeNode1 = new TreeNode(1);TreeNode treeNode21 = new TreeNode(1);TreeNode treeNode22 = new TreeNode(1);TreeNode treeNode31 = new TreeNode(2);TreeNode treeNode32 = new TreeNode(3);TreeNode treeNode34 = new TreeNode(2);TreeNode treeNode43 = new TreeNode(4);TreeNode treeNode44 = new TreeNode(5);TreeNode treeNode45 = new TreeNode(3);treeNode1.left = treeNode21;treeNode1.right = treeNode22;treeNode21.left = treeNode31;treeNode21.right = treeNode32;treeNode22.right = treeNode34;treeNode32.left = treeNode43;treeNode32.right = treeNode44;treeNode34.left = treeNode45;TreeNode treeNode212 = new TreeNode(1);TreeNode treeNode312 = new TreeNode(2);TreeNode treeNode322 = new TreeNode(3);TreeNode treeNode432 = new TreeNode(4);TreeNode treeNode442 = new TreeNode(5);treeNode212.left = treeNode312;treeNode212.right = treeNode322;treeNode322.left = treeNode432;treeNode322.right = treeNode442;SubTree subTree = new SubTree();System.out.println(subTree.isSubtree(treeNode1, treeNode212));//System.out.println(subTree.priorSubtree(treeNode1,treeNode212));} /** * @param T1, T2: The roots of binary tree. * @return: True if T2 is a subtree of T1, or false. */ public boolean isSubtree(TreeNode T1, TreeNode T2) { // write your code here boolean result = false;// 如何child=NULL,则说明child已经到达叶子了,无论parent是否到达一个叶子节点,都应该返回真if (T2 == null) {return true;}// 首先,如果程序执行到这里,则child一定不是NULL,如果parent=NULL,则说明parent不包含childif (T1 == null) {return false;}if (T1.val == T2.val) {// 当if条件满足的时候,则继续递归判断它们的左子树和右子树是否相等,只有两者相等才返回真 result = isSubtreeDef(T1,T2);} if(!result){result= (isSubtree(T1.left, T2) || isSubtree(T1.right, T2));}return result;}public boolean isSubtreeDef(TreeNode T1, TreeNode T2) {// write your code here// 如何child=NULL,则说明child已经到达叶子了,无论parent是否到达一个叶子节点,都应该返回真if (T2 == null&&T1 == null) {return true;}if (T1!=null&&T2!=null&&T1.val == T2.val) {// 当if条件满足的时候,则继续递归判断它们的左子树和右子树是否相等,只有两者相等才返回真return (isSubtreeDef(T1.left, T2.left) && isSubtreeDef(T1.right, T2.right));} return false;}}class TreeNode {public int val;public TreeNode left, right;public TreeNode(int val) {this.val = val;this.left = this.right = null;}}
0 0
- Subtree(java)
- Subtree
- Subtree
- subTree
- LintCode Minimum Subtree java solution
- leetcode解题之 508. Most Frequent Subtree Sum II java 版(求子树和)
- leetcode508 Most Frequent Subtree Sum Java
- LeetCode-572. Subtree of Another Tree (Java)
- 245.Subtree-子树(容易题)
- 572. Subtree of Another Tree(Easy)
- LeetCode-572. Subtree of Another Tree (JAVA)子树
- LeetCode 333. Largest BST Subtree(最大二叉搜索树)
- 572. Subtree of Another Tree (另一个树的子树)
- #245 Subtree
- Minimum Subtree
- Minimum Subtree
- minimum subtree
- hdu 4918 Query on the subtree (动态点分治+动态开点+线段树)
- Node:二叉树搜索
- Runtime-动态添加方法
- 关于大型网站技术演进的思考(十五)--网站静态化处理—前后端分离—中(7)
- 终于是把考试给挺过去了,现在放假也有好几天了、
- Android ListView组件中android:drawSelectorOnTop
- Subtree(java)
- 冒泡排序
- linux smartmontools 工具
- GRE写作必备句型
- 关于大型网站技术演进的思考(十六)--网站静态化处理—前后端分离—下(8)
- 电力系统潮流计算程序实现C语言版(动态节点+稀疏技术)
- 关于大型网站技术演进的思考(十七)--网站静态化处理—满足静态化的前后端分离(9)
- Autolayout (一)
- bzoj 4178: A