Leetcode 之 Same Tree

来源:互联网 发布:ak47军刺多少钱淘宝 编辑:程序博客网 时间:2024/04/28 07:01

问题:

Given two binary trees, write a function to check if they are equal or not.

Two binary trees are considered equal if they are structurally identical and the nodes have the same value.

解决思路:对两棵树采用深度优先遍历,每次遍历检查节点的结构和值是否一样。只需要在某种遍历树的方法的时候,确保当前遍历节点的结构和值是一样的即可。


#include <stack>/** * Definition for binary tree * 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 true;        } <span style="white-space:pre"></span>if(p == NULL || q == NULL )            return false;       // if((p == NULL && q != NULL) || (p != NULL && q == NULL))        //    return false;        std::stack<TreeNode *> p_stack;        std::stack<TreeNode *> q_stack;        p_stack.push(p);        q_stack.push(q);        while(!p_stack.empty()){            TreeNode* p_current = p_stack.top();            p_stack.pop();            TreeNode* q_current = q_stack.top();            q_stack.pop();            if(p_current->val == q_current->val)            {                if((p_current->left && !q_current->left) || (!p_current->left && q_current->left) || (!p_current->right && q_current->right) || (p_current->right && !q_current->right) ){                    return false;                }                if(p_current->left && q_current->left){                    if(p_current->left->val != q_current->left->val)                        return false;                    p_stack.push(p_current->left);                    q_stack.push(q_current->left);                }                if(p_current->right && q_current->right){                    if(p_current->right->val != q_current->right->val)                        return false;                    p_stack.push(p_current->right);                    q_stack.push(q_current->right);                 }                            }else{                return false;            }        }     }};



0 0
原创粉丝点击