[面试算法题]比较二叉树异同-leetcode学习之旅(5)

原创 2015年11月18日 22:37:23

问题描述

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.
和Balanced Binary Tree那题很像。定义T(p)为以p为根的树,T(p) = T(q)需要符合两个条件:

(1) p和q等价,这里的等价有两种情况:p = q = NULL,或p、q都不为NULL且p->val = q->val。反过来说当p和q中只有一个为NULL,或者p->val != q->val时p和q不等价。

(2) 如果p和q都不为NULL,则要求T(p->left) = T(q->left)且T(p->right) = T(q->right)。

想清楚以上两点,基本上就秒杀了。

c++实现

/**
 * 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 && !q) return true;
        if((!p && q) || (p && !q)) return false;
        if(p->val != q->val) return false;
        return isSameTree(p->left,q->left) && isSameTree(p->right,q->right);
    }
};
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

二叉树的最大深度算法面试题-leetcode学习之旅(3)

标题Maximum Depth of Binary Tree描述The maximum depth is the number of nodes along the longest path from...

[面试算法题]有序列表删除节点-leetcode学习之旅(4)

问题描述Write a function to delete a node (except the tail) in a singly linked list, given only access t...

【LeetCode-面试算法经典-Java实现】【110-Balanced Binary Tree(平衡二叉树)】

【110-Balanced Binary Tree(平衡二叉树)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a binary tree, determin...

【LeetCode-面试算法经典-Java实现】【107-Binary Tree Level Order Traversal II(二叉树层序遍历II)】

【107-Binary Tree Level Order Traversal II(二叉树层序遍历II)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a b...

【LeetCode-面试算法经典-Java实现】【103-Binary Tree Zigzag Level Order Traversal(二叉树分层Z字形遍历)】

【103-Binary Tree Zigzag Level Order Traversal(二叉树分层Z字形遍历)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Give...

【LeetCode-面试算法经典-Java实现】【106-Construct Binary Tree from Inorder and Postorder Traversal(构造二叉树II)】

【106-Construct Binary Tree from Inorder and Postorder Traversal(通过中序和后序遍历构造二叉树II)】【LeetCode-面试算法经典-J...

【LeetCode-面试算法经典-Java实现】【102-Binary Tree Level Order Traversal(二叉树层序遍历)】

【102-Binary Tree Level Order Traversal(二叉树层序遍历)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a binary...

【LeetCode-面试算法经典-Java实现】【199-Binary Tree Right Side View(从右边看二叉树)】

【199-Binary Tree Right Side View(从右边看二叉树】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】代码下载【https://github.com/W...

【LeetCode-面试算法经典-Java实现】【116-Populating Next Right Pointers in Each Node(二叉树链接右指针)】

【116-Populating Next Right Pointers in Each Node(二叉树链接右指针)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Giv...

【LeetCode-面试算法经典-Java实现】【105-Construct Binary Tree from Preorder and Inorder Traversal(构造二叉树)】

【106-Construct Binary Tree from Preorder and Inorder Traversal(通过前序和中序遍历构造二叉树)】【LeetCode-面试算法经典-Java...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[面试算法题]比较二叉树异同-leetcode学习之旅(5)
举报原因:
原因补充:

(最多只允许输入30个字)