Skip to content

Commit e8ae21c

Browse files
committed
update
1 parent 1d5073c commit e8ae21c

File tree

8 files changed

+100
-0
lines changed

8 files changed

+100
-0
lines changed

77. 平衡二叉树.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
***输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。***
2+
3+
```
4+
# Definition for a binary tree node.
5+
# class TreeNode:
6+
# def __init__(self, x):
7+
# self.val = x
8+
# self.left = None
9+
# self.right = None
10+
11+
class Solution:
12+
def isBalanced(self, root: TreeNode) -> bool:
13+
#构建递归,如果是平衡二叉树则返回树的深度否则返回-1
14+
def recur(root):
15+
if not root:
16+
return 0
17+
left = recur(root.left)
18+
if left == -1:
19+
return -1
20+
right = recur(root.right)
21+
if right == -1:
22+
return -1
23+
return max(left, right)+1 if abs(left-right) <=1 else -1
24+
25+
return recur(root) != -1
26+
```

78. 二叉树展开为链表.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
![algo29](./images/algo29.jpg)
2+
![algo30](./images/algo30.jpg)
3+
4+
```
5+
# Definition for a binary tree node.
6+
# class TreeNode(object):
7+
# def __init__(self, val=0, left=None, right=None):
8+
# self.val = val
9+
# self.left = left
10+
# self.right = right
11+
class Solution(object):
12+
def flatten(self, root):
13+
"""
14+
:type root: TreeNode
15+
:rtype: None Do not return anything, modify root in-place instead.
16+
"""
17+
18+
if not root:
19+
return
20+
self.flatten(root.left)
21+
self.flatten(root.right)
22+
tmp = root.right
23+
root.right = root.left
24+
root.left = None
25+
while root.right:
26+
root = root.right
27+
root.right = tmp
28+
```

79. 合并二叉树.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
![algo31](./images/algo31.jpg)
2+
3+
```
4+
# Definition for a binary tree node.
5+
# class TreeNode(object):
6+
# def __init__(self, val=0, left=None, right=None):
7+
# self.val = val
8+
# self.left = left
9+
# self.right = right
10+
class Solution(object):
11+
def mergeTrees(self, root1, root2):
12+
"""
13+
:type root1: TreeNode
14+
:type root2: TreeNode
15+
:rtype: TreeNode
16+
"""
17+
if not root1:
18+
return root2
19+
20+
if not root2:
21+
return root1
22+
23+
merged = TreeNode(root1.val+root2.val)
24+
merged.left = self.mergeTrees(root1.left, root2.left)
25+
merged.right = self.mergeTrees(root1.right, root2.right)
26+
return merged
27+
```

80. 翻转二叉树.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
![algo32](./images/algo32.jpg)
2+
3+
```
4+
# Definition for a binary tree node.
5+
# class TreeNode:
6+
# def __init__(self, val=0, left=None, right=None):
7+
# self.val = val
8+
# self.left = left
9+
# self.right = right
10+
class Solution:
11+
def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
12+
if not root:
13+
return None
14+
left = self.invertTree(root.left)
15+
right = self.invertTree(root.right)
16+
root.right = left
17+
root.left = right
18+
return root
19+
```

images/algo29.jpg

25.6 KB
Loading

images/algo30.jpg

42.5 KB
Loading

images/algo31.png

3.14 KB
Loading

images/algo32.jpg

5.22 KB
Loading

0 commit comments

Comments
 (0)