判断两个二叉树是否相同(c++递归实现)
来源:互联网 发布:c 串口通信编程 编辑:程序博客网 时间:2024/04/26 12:17
判断两棵二叉树是否为同一棵树,需要比较两个方面:
一:结构是否相同;
二:每个节点上的元素是否相同;
当二者都满足的时候才可判定二者为同一棵二叉树。
结构相同包括节点的个数以及每个节点上的子树相同。
下面是代码实现。
#include<iostream>using namespace std;typedef struct Node* TNode;struct Node{ int data; TNode left; TNode right;};void Print(TNode T);TNode BuildTree(TNode T, int N); //建立二叉树TNode Insert(TNode T,int i); //在树中插入一个元素bool Compare(TNode T1, TNode T2); //比较两个二叉树是不是同一棵树int main(){ int N, L; TNode T; cin >> N; while(N != 0){ cin >> L; T = BuildTree(T, N); while(L--){ TNode T1; T1 = BuildTree(T1, N); if(Compare(T, T1)) cout << "Yes" << endl; else cout << "No" << endl; } cin >> N; } return 0;}TNode BuildTree(TNode T, int N){ TNode p, s; int i; cin >> i; T = new Node(); T->data = i; T->left = NULL; T->right = NULL; while(--N){ cin >> i; T = Insert(T, i); } return T;}TNode Insert(TNode T,int i){ if(T){ if(i > T->data) T->right = Insert(T->right, i); else if(i < T->data) T->left = Insert(T->left, i); } else{ T = new Node(); T->data = i; T->left = NULL; T->right = NULL; } return T;}bool Compare(TNode T1, TNode T2){ if(T1 && T2 && (T1->data==T2->data)){ if(Compare(T1->left, T2->left) && Compare(T1->right, T2->right)) //若根节点相同,递归判断节点的左右子树是否相同 return true; else return false; } else if(T1==NULL && T2==NULL) //如果都是空树,二者相同 return true; else return false; //其他情况,二者不同}
```
“`
阅读全文
0 0
- 判断两个二叉树是否相同(c++递归实现)
- 判断两个二叉树是否结构相同
- 判断两个二叉树是否相同
- 判断两个二叉树是否相同
- Java判断两个二叉树是否相同
- 算法 - 判断两个二叉树是否相同
- [Swift]判断两个二叉树是否相同
- 二叉树面试题(一)---判断两个二叉树结构是否相同
- LeetCode基础--二叉树-判断两个树是否相同
- LeetCode--Same Tree(判断两个二叉树是否相同)Python
- 每天一道LeetCode-----判断两个二叉树是否相同
- 判断两个二叉树是否相等(仅结构) -- 递归和非递归实现
- 两个二叉树结构是否相同(结构和数据都相同) -- 递归和非递归方法
- 二叉树(10)----比较两个二叉树是否相同(结构和数据),递归和非递归
- Q391判断是否为平衡二叉树(递归实现)
- C语言实现非递归的比较两个二叉树是否同构
- 比较两个二叉树是否相同
- 比较两个二叉树是否相同
- 58. Length of Last Word
- 7.3 计算两整数的最大值,
- Hadoop源码分析:FileSystem类
- [leetcode] 687. Longest Univalue Path
- 分布式系统的十二个目标
- 判断两个二叉树是否相同(c++递归实现)
- java自定义异常
- redis应用简单说
- POJ-2689 Prime Distance(筛素数的平移)
- java异常处理
- java中main方法调用自身main方法
- 二叉树遍历(遍历C#实现)
- Tomcat 编码记录
- [学习笔记][Java编程思想]第8章:多态