Leetcode:100. Same Tree

来源:互联网 发布:东莞网站关键词优化 编辑:程序博客网 时间:2024/06/06 01:38

Description

这里写图片描述

解题思路

采用DFS递归式的查找比较,若有一个不相等则返回false

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    bool isSameTree(TreeNode* p, TreeNode* q) {        if(p == NULL || q == NULL) return (p==q);        return (p->val == q->val && isSameTree(p->left,q->left) && isSameTree(p->right,q->right));    }};

非递归解法,利用栈,将相同的数压入栈,若不相同或一方为空则返回false,到下一个数时pop到上一个数,若两棵树相等则遍历结束时必然两个站均为空。

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    bool isSameTree(TreeNode* p, TreeNode* q) {        stack<TreeNode*> stk1;        stack<TreeNode*> stk2;        stk1.push(p);        stk2.push(q);        while(!stk1.empty() && !stk2.empty()){            TreeNode* tmp1 = stk1.top();            TreeNode* tmp2 = stk2.top();            stk1.pop();            stk2.pop();            if(tmp1 && tmp2){                if(tmp1->val != tmp2->val)                    return false;                stk1.push(tmp1->left);                stk1.push(tmp1->right);                stk2.push(tmp2->left);                stk2.push(tmp2->right);            }            if((tmp1 && !tmp2) || (!tmp1 && tmp2))                return false;        }        return stk1.empty() == stk2.empty();    }};
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 抽茧 第一茧 破茧成蝶图片 剥茧抽丝 茧丝 腹茧症 作茧 一招清除脚上老皮老茧 白醋去除脚底老茧硬块 做菜 做菜app 胖妹做菜 学做菜的app 学做菜app 做菜软件 做菜大全 做菜的app 秋妹做菜 板栗做菜 教做菜的app 做菜作文 妈妈做菜 土豆做菜 怎么做菜 学做饭做菜 如何做菜 做菜学习 简单做菜 做菜图片 做菜方法 怎么学做菜 做菜的方法 做菜网 做菜网站 做菜食谱 如何学做菜 我要学做菜 我想学做菜 做菜生意 新手学做菜 做菜培训