面试题26
树的子结构
(先序遍历+递归)
题目:
https://leetcode-cn.com/problems/shu-de-zi-jie-gou-lcof/
输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)
B是A的子结构, 即 A中有出现和B相同的结构和节点值。
例如:
-
给定的树 A:
3
/ \
4 5
/ \
1 2
-
给定的树 B:
4
/
1
返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。
解题思路
若树 B 是树 A 的子结构,则子结构的根节点可能为树 A 的任意一个节点。因此,判断树 B 是否是树 AA 的子结构,需完成以下两步工作:
- 先序遍历树 AA 中的每个节点 n_A;
对应函数 isSubStructure(A, B)
- 判断树 A 中 以 n_A为根节点的子树 是否包含树 B。
对应函数 recur(A, B)
代码
1 |
|