面试题18:树的子结构

题目:输入两棵二叉树A和B,判断B是不是A的子结构。

思路:

  1. 第一步在树A中找到和B的根节点的值一样的结点R,
  2. 第二步再判断树A中以R为根结点的子树是不是包含和树B一样的结构。

解答:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package offer;
public class {
static class ListNode{
int data;
ListNode next;
}
public ListNode Merge(ListNode pHead1,ListNode pHead2){
if(pHead1 == null)
return pHead2;
else if(pHead2 == null)
return pHead1;
ListNode pMergedHead = null;
if(pHead1.data <pHead2.data){
pMergedHead = pHead1;
pMergedHead.next = Merge(pHead1.next ,pHead2);
}else{
pMergedHead = pHead2;
pMergedHead.next = Merge(pHead1,pHead2.next);
}
return pMergedHead;
}
}