判断一个树是否是另一个树的子树
2017-10-09 16:08
387 查看
判断一个树是否是另一个树的子树
package ZHIHU; public class Main20171009004 { /** * 判断一个树是否是另一个树的子树 */ private static class Node{ int value; Node left, right; Node(int value){ this.value = value; left =null; right = null; } } private static boolean isSubTree(Node root1, Node root2){ boolean ans = false; if(root1 != null && root2 != null){ if(root1.value == root2.value){ ans = isSub(root1, root2); }else{ ans = isSubTree(root1.left, root2); if(!ans){ ans = isSubTree(root1.right, root2); } } } return ans; } // private static boolean isSub(Node root1, Node root2){ if(root2 == null){ return true; } if(root1 == null){ return false; } if(root1.value != root2.value) return false; return isSub(root1.left, root2.left) && isSub(root1.right, root2.right); } public static void main(String[] args) { Node root1 = new Node(1); Node node1 = new Node(2); Node node2 = new Node(2); root1.left = node1; root1.right = node2; Node node3 = new Node(3); Node node4 = new Node(4); Node node5 = new Node(3); root1.left.left = node3; root1.left.right = node4; root1.right.left = node5; Node node6 = new Node(2); root1.left.right.left = node6; Node root2 = new Node(2); Node node7 = new Node(3); Node node8 = new Node(4); root2.left = node7; root2.right = node8; System.out.println(isSubTree(root1, root2)); } }
相关文章推荐
- 2个二叉树A、B,树的每个节点上都有一个整数值。如何判断A与B是否其中一个是另一个的子树?
- 判断一个二叉树是否是另一个的子树
- 利用KMP算法判断一个树是否是另一个树的子树
- 判断一个树是否为另一个树的子树
- 判断一个二叉树是否是另一个二叉树的子树
- 【IT笔试面试题整理】判断一个树是否是另一个的子树
- 如何判断一个二叉树是否为另一个二叉树的子树
- 判断一个二叉树是否是另一个二叉树的子树
- 判断一个树是否为另一个树的子树
- LintCode 判断一个二叉树树是否是另一个二叉树的子书
- [LintCode]判断一个字符串是否包含另一个字符串的所有字符
- 判断一个IP区间(或IP)是否被另一个IP区间所包含
- C#判断一个字符串是否包含另一个字符串?
- 关于javascript中判断一个字符串是否包含另一个字符串
- 描述一个运行时间为O(nlgn)的算法,使之能在给定一个由n个整数构成的集合S和另一个整数 X 时,判断出S中是否存在有两个其和刚好等于 X 的元素。
- 判断一个字符串里是否包含另一个字符串所有的字符
- 利用已知函数,判断一个字符串是否是另一个字符串的旋转字符串(面试题3)
- day14之判断一个节点是否在一棵二叉树中+判断一颗二叉树是是否是另一颗树的子树
- 判断一个IP区间(或IP)是否被另一个IP区间所包含
- 判断一个字符串是否在另一个字符串中:O(m+n)