diff --git a/notes/面试总结.md b/notes/面试总结.md
index 184a80d6..d99927d8 100644
--- a/notes/面试总结.md
+++ b/notes/面试总结.md
@@ -28,6 +28,8 @@
* [23. 链表中环的入口结点](#23-链表中环的入口结点)
* [24. 反转链表](#24-反转链表)
* [25. 合并两个排序的链表](#25-合并两个排序的链表)
+* [26. 树的子结构](#26-树的子结构)
+* [27. 二叉树的镜像](#27-二叉树的镜像)
* [参考文献](#参考文献)
@@ -1965,6 +1967,108 @@ class Solution:
cur.next = pHead2
return head.next
```
+# 26. 树的子结构
+
+[NowCoder](https://www.nowcoder.com/practice/6e196c44c7004d15b1610b9afca8bd88?tpId=13&tqId=11170&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking)
+
+## 题目描述
+
+
+
+## 解题思路
+
+```java
+public boolean HasSubtree(TreeNode root1, TreeNode root2) {
+ if (root1 == null || root2 == null)
+ return false;
+ return isSubtreeWithRoot(root1, root2) || HasSubtree(root1.left, root2) || HasSubtree(root1.right, root2);
+}
+
+private boolean isSubtreeWithRoot(TreeNode root1, TreeNode root2) {
+ if (root2 == null)
+ return true;
+ if (root1 == null)
+ return false;
+ if (root1.val != root2.val)
+ return false;
+ return isSubtreeWithRoot(root1.left, root2.left) && isSubtreeWithRoot(root1.right, root2.right);
+}
+```
+
+```python
+# -*- coding:utf-8 -*-
+# class TreeNode:
+# def __init__(self, x):
+# self.val = x
+# self.left = None
+# self.right = None
+class Solution:
+ def HasSubtree(self, pRoot1, pRoot2):
+ # write code here
+ if pRoot1 == None or pRoot2 == None:
+ return False
+ return self.isSubtreeWithRoot(pRoot1, pRoot2) or \
+ self.HasSubtree(pRoot1.left, pRoot2) or \
+ self.HasSubtree(pRoot1.right, pRoot2)
+
+ def isSubtreeWithRoot(self, pRoot1, pRoot2):
+ if pRoot2 == None:
+ return True
+ if pRoot1 == None:
+ return False
+ if pRoot1.val != pRoot2.val:
+ return False
+ return self.isSubtreeWithRoot(pRoot1.left, pRoot2.left) and \
+ self.isSubtreeWithRoot(pRoot1.right, pRoot2.right)
+```
+
+# 27. 二叉树的镜像
+
+[NowCoder](https://www.nowcoder.com/practice/564f4c26aa584921bc75623e48ca3011?tpId=13&tqId=11171&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking)
+
+## 题目描述
+
+
+
+## 解题思路
+
+```java
+public void Mirror(TreeNode root) {
+ if (root == null)
+ return;
+ swap(root);
+ Mirror(root.left);
+ Mirror(root.right);
+}
+
+private void swap(TreeNode root) {
+ TreeNode t = root.left;
+ root.left = root.right;
+ root.right = t;
+}
+```
+
+```python
+# -*- coding:utf-8 -*-
+# class TreeNode:
+# def __init__(self, x):
+# self.val = x
+# self.left = None
+# self.right = None
+class Solution:
+ # 返回镜像树的根节点
+ def Mirror(self, root):
+ # write code here
+ if root == None:
+ return
+ self.swap(root)
+ self.Mirror(root.left)
+ self.Mirror(root.right)
+
+
+ def swap(self, root):
+ root.left, root.right = root.right, root.left
+```
# 参考文献