判断两颗二叉树的相同的C语言代码
时间: 2024-11-20 18:43:10 浏览: 10
判断两颗二叉树是否相似(C语言)
5星 · 资源好评率100%
在C语言中,判断两棵二叉树是否相同的算法通常通过递归实现,可以使用深度优先搜索(Depth First Search, DFS)。以下是简单的思路:
首先,我们需要定义两个结构体分别表示二叉树节点:
```c
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
```
接下来,我们可以编写一个函数来比较两个树的根节点及其子树:
```c
int isSameTree(TreeNode* p, TreeNode* q) {
if (p == NULL && q == NULL)
return 1; // 都为空,视为相同
if (p == NULL || q == NULL)
return 0; // 有一个为空,视为不同
// 如果值、左子树和右子树都相同,则认为两棵树相同
return (p->val == q->val) &&
isSameTree(p->left, q->left) &&
isSameTree(p->right, q->right);
}
```
这个函数会先检查两个节点是否都为空,然后逐层递归地对比它们的值以及左右子树。
阅读全文