zoukankan      html  css  js  c++  java
  • Same Tree

    我觉得和树的遍历很像,想用递归,不过返回值那块我很迷茫,递归使用栈,返回值是返回给上一层的,我怎么才能让递归只返回一个bool值呢,

    阶乘可以用递归来写,返回值也只有一个,如果我一定这样写的话,我就让返回值做“与”操作,感觉程序写出来很ugly,不管了,小菜鸟先这么写着,之后再参看网上大牛的大作,嘿嘿

    呃,也许不是吧,递归中return到底是什么样子的呀,写个小程序看看吧:

     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 //判断2个数组中元素是否都相等
     6 //程序本身没有什么意思,一些条件也没有判断,比如说为空什么的,
     7 //我只是想看看递归中return是什么的情况,呵呵
     8 
     9 
    10 bool is_same_value(int a[],int b[],int i,int n)
    11 {
    12     if(i==n)
    13     {
    14         return true;
    15     }
    16     if(a[i]!=b[i])
    17     {
    18         return false;
    19     }
    20     else
    21     {
    22         return is_same_value(a,b,i+1,n);
    23     }
    24 }
    25 int main()
    26 {
    27     int a[]= {1,2,3,4,5};
    28     int b[]= {1,2,3,3,5};
    29     cout<<is_same_value(a,b,0,5)<<endl;
    30     return 0;
    31 

    调试一下发现当走到return false时,就返回到main了(我看的是直接返回main了,但感觉不应该是这样的吧),但是一般递归中的返回我还是不懂。

     1 /**
     2  * Definition for binary tree
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     bool isSameTree(TreeNode *p, TreeNode *q) {
    13         //if(p==NULL&&q==NULL)
    14         if(!p && !q)
    15         {
    16             return true;
    17         }
    18         //else if((p==NULL&&q!=NULL)||(p!=NULL&&q==NULL)||(p->val!=q->val))
    19         else if((!p && q)||(p && !q)||(p->val!=q->val))
    20         {
    21             return false;
    22         }
    23         else
    24         {
    25             /*isSameTree(p->left,q->left);
    26             isSameTree(p->right,q->right);*/ //这样写是错的
    27             return isSameTree(p->left,q->left)&&isSameTree(p->right,q->right);
    28         }
    29     }
    30 };
  • 相关阅读:
    2017 ACM/ICPC Asia Regional Qingdao Online
    2017 ACM/ICPC Asia Regional Qingdao Online
    2017 ACM-ICPC 亚洲区(西安赛区)网络赛 Sum
    2017 ACM/ICPC Asia Regional Shenyang Online array array array
    无权最短路
    解题报告:poj 3070
    矩阵学习笔记
    拓扑排序
    LIS严格递增和非递减模板
    2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛-A banana·
  • 原文地址:https://www.cnblogs.com/crane-practice/p/3585454.html
Copyright © 2011-2022 走看看