LeetCode100.相同的树(C语言)
2020-03-31 19:32
761 查看
LeetCode100.相同的树(C语言)
给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
示例 1:
输入:
1 1
/ \ /
2 3 2 3
[1,2,3], [1,2,3]
输出: true
示例 2:
输入:
1 1
/
2 2
[1,2], [1,null,2]
输出: false
示例 3:
输入:
1 1
/ \ /
2 1 1 2
[1,2,1], [1,1,2]
输出: false
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/same-tree
思路:其实这题就是关于二叉树的遍历
方法一:递归实现(dfs)
先上代码
/** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ bool isSameTree(struct TreeNode* p, struct TreeNode* q){ if(p==NULL&&q==NULL) return true; if(p==NULL||q==NULL) return false; if(p->val==q->val) { return (isSameTree(p->left,q->left)&&isSameTree(p->right,q->right)); } else return false; }
思路:如果p和q两者均不为null且p的值和q的值不相等,则递归判断p的左子树是否和q的左子树相等,p的右子树是否和q的右子树相等,只有两者都相等时,才返回true。
递归方法的代码比较简洁
方法二:非递归(队列实现,bfs)
上代码:
```c bool isSameTree(struct TreeNode* p, struct TreeNode* q){ struct TreeNode* que[500]; int head=0,tail=0; que[tail++]=p; que[tail++]=q; while(head<tail) { struct TreeNode*x=que[head++]; struct TreeNode*y=que[head++]; if(x==NULL&&y==NULL) continue; if(x==NULL||y==NULL||x->val!=y->val) return false; if(x->left!=NULL||y->left!=NULL) { que[tail++]=x->left; que[tail++]=y->left; } if(x->right!=NULL||y->right!=NULL) { que[tail++]=x->right; que[tail++]=y->right; } } return true; }
思路:用队列的话,对二叉树实现的就是从上至下的 逐层遍历
其中最主要的还是要理解其中的入队和出队的顺序等操作
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- LeetCode 100 . 相同的数
- 利用python 完成 leetcode 100 相同的树
- LeetCode(100):相同的树
- LeetCode100-相同的二叉树(C++实现)
- LeetCode写题历程——100.相同的树
- LeetCode100相同的树
- Leetcode 100 python 相同的树
- leetcode100:相同的树
- Leetcode 100 Same Tree 判断两棵树相同
- LeetCode-100.相同的树(相关话题:递归)
- Leetcode 100 相同的数(相同二叉树, 二叉树反转)
- 【LeetCode】[100] 相同的树(递归思想)
- LeetCode100 -- Same Tree--判断两棵二叉树是否相同
- LeetCode 100 Same Tree(相同树判断)(二叉树、递归、栈和队列、深搜和宽搜)
- 【LeetCode-面试算法经典-Java实现】【100-Same Tree(两棵树是否相同)】
- leetcode100_相同的树
- LeetCode 100 相同的树 C++/Java 递归
- leetcode题目: Reverse Integer 的C语言解法
- 【C语言】LeetCode 468. Validate IP Address
- [C语言程序设计]C语言中的“标准化指数形式”和 “规范化的指数形式” 是否相同