zoukankan      html  css  js  c++  java
  • 剑指 offer 树的子结构

    题目描述:

    输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)。
    第一遍没写出来错误点:认为首先应该找到pRoot1等于pRoot2的节点,但是递归就是自己在不断递归中寻找相等的节点的。判断是否相等可以完全放到另外一个函数中进行判断。主函数主要就是看结果,比较相等可以完全放到另外一个函数中去。
    /*
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };*/
    class Solution {
    public:    
        bool helper(TreeNode* pRoot1, TreeNode* pRoot2){
            if(pRoot2 == nullptr){
                return true;
            }
            if(pRoot1 == nullptr){
                return false;
            }
            if(pRoot1 -> val != pRoot2 -> val){
                return false;
            }
            bool left,right;
            
            left =  helper(pRoot1 -> left,pRoot2 -> left);
            right =  helper(pRoot1 -> right,pRoot2 -> right);
            
            return left && right;
            
        }
      
        bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) {
            if(pRoot1 == nullptr || pRoot2 == nullptr){
                return false;
            }
            return helper(pRoot1,pRoot2) || helper(pRoot1 -> left,pRoot2) || helper(pRoot1 -> right,pRoot2);        
        }
    };
  • 相关阅读:
    1206 冲刺三
    1130持续更新
    1128项目跟进
    冲刺一1123(总结)
    冲刺一
    1117 新冲刺
    0621 第三次冲刺及课程设计
    0621回顾和总结
    实验四主存空间的分配和回收
    学习进度条
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/7467907.html
Copyright © 2011-2022 走看看