树的子结构

题目描述

输入两颗二叉树A,B,判断B是不是A的子结构。

class Solution {
public:

    bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2)
    {
       bool result= false;
        if(pRoot1!=NULL&&pRoot2!=NULL){
        if(pRoot2->val == pRoot2->val)
            result=equal(pRoot1,pRoot2);
        if(!result)
            result=equal(pRoot1->left,pRoot2);
        if(!result)
            result=equal(pRoot1->right,pRoot2);
        }
        return result;
    }
    bool equal(TreeNode* pa,TreeNode* pb)
        {
        if(pb==NULL)
            return true;
        if(pa==NULL)
            return false;
        if(pa->val!=pb->val)
            return false;
        return equal(pa->left,pb->left)&&equal(pa->right,pb->right);
    }
};
时间: 2024-10-20 02:17:33

树的子结构的相关文章

【剑指offer】树的子结构

转载请注明出处:http://blog.csdn.net/ns_code/article/details/25907685 剑指offer第18题,九度OJ上测试通过! 题目描述: 输入两颗二叉树A,B,判断B是不是A的子结构. 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行一个整数n,m(1<=n<=1000,1<=m<=1000):n代表将要输入的二叉树A的节点个数(节点从1开始计数),m代表将要输入的二叉树B的节点个数(节点从1开始计数).

剑指offer之树的子结构

题目: 树的子结构 链接: https://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88?tpId=13&tqId=11170&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题目描述: 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 思路: 分为两步: 第一步:

剑指 offer 树的子结构

题目描述: 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构). 第一遍没写出来错误点:认为首先应该找到pRoot1等于pRoot2的节点,但是递归就是自己在不断递归中寻找相等的节点的.判断是否相等可以完全放到另外一个函数中进行判断.主函数主要就是看结果,比较相等可以完全放到另外一个函数中去. /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeN

代码的鲁棒性:树的子结构

输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 代码实现方式一: /** 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

剑指offer——树的子结构 (JAVA代码)

版权声明:本文为博主原创文章,未经博主允许不得转载. 题目描述: 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构). 解题思路: 首先看牛客网给出的测试用例: 一般对于树的操作不像链表一样,操作更复杂,如果使用循环遍历的话,对于非完全二叉树规律难寻,一般通用的方法就是使用递归求解,本题也不例外,同样使用递归求解,求解的大体思路是首先判断B的根节点和A的根节点是否相同(这里的相同是指节点的值相同并且左右子节点相同),如果相同比较他们的左右子节点,这一步骤是

《剑指Offer》题目:树的子结构

题目描述:树的子结构 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 题目分析:此题可以拆成两题,1.在二叉树中查找是否存在某个结点:2.判断两个二叉树是否有相同的结构 Java代码: class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } public class

树的子结构-剑指Offer

树的子结构 题目描述 输入两颗二叉树A,B,判断B是不是A的子结构. 思路 分两步来实现 先判断Tree1里的节点有没有和Tree2的根节点相同值得节点,递归的判断,若有,侧判断第二步,否则,返回false 从这个有相同值的节点开始判断,递归的左右对应的判断子树是否相等,注意空指针的情况 注意:在编写遍历树的代码时一定要高度警惕,在每一处要访问地址的时候都要问问自己这个地址有没有可能是NULL,如果是该怎么处理.(为了确保自己代码的完整正确,写完代码后要多用几个测试用例检验自己的程序) 代码 /

树的子结构(剑指offer)递归

树的子结构 参与人数:1611时间限制:1秒空间限制:32768K 通过比例:18.19% 最佳记录:0 ms|0K(来自  mearo) 题目描述 输入两颗二叉树A,B,判断B是不是A的子结构. 链接:http://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88?rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 思路:判断A

剑指OFFER之树的子结构(九度OJ1520)

题目描述: 输入两颗二叉树A,B,判断B是不是A的子结构. 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每个测试案例,输入的第一行一个整数n,m(1<=n<=1000,1<=m<=1000):n代表将要输入的二叉树A的节点个数(节点从1开始计数),m代表将要输入的二叉树B的节点个数(节点从1开始计数).接下来一行有n个数,每个数代表A树中第i个元素的数值,接下来有n行,第一个数Ki代表第i个节点的子孩子个数,接下来有Ki个树,代表节点i子孩子节点标号.接下来m+1行,与

28、输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 思路:  1.当Tree1和Tree2都不为零的时候,才进行比较.否则直接返回false  2. 2.1如果找到了对应Tree2的根节点的点, 以这个根节点为为起点判断是否包含Tree2 2.2 如果找不到,那么就再去root的左孩子当作起点,去判断时候包含Tree22.3 如果还找不到,那么就再去root的右孩子当作起点,去判断时候包含Tree2 1 public class Solution