1.题目
输入两棵二叉树 A 和 B,判断 B 是不是 A 的子结构。
2.示例
树 A
3
/ \
4 5
/ \
1 2
树B
4
/ \
1 2
上面 B 是 A 的子结构,故返回 true
。
3.解题思路
1.在树 A 中找到和树 B 的根结点的值一样的结点 Root。
2.接着判断树 A 中以 Root 为根结点的子树是否包含和树 B 一样的结构。
3.若第 2 步有相同的结构则返回ture
,若没有,则继续重复第 1、2步,直到遍历完树 A 还没有找到,就返回false
。
4.代码实现
#include <stdio.h>
#include <stdbool.h>
// 二叉树的二叉链表存储结构
typedef struct BiTNode {
double data; // 结点数据域
struct BiTNode* lchild; // 左孩子结点
struct BiTNode* rchild; // 右孩子结点
}BiTNode