Skip to content

Commit 72d751d

Browse files
committed
yo
1 parent 35bd155 commit 72d751d

File tree

7 files changed

+196
-29
lines changed

7 files changed

+196
-29
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ Success is like pregnancy, Everybody congratulates you but nobody knows how many
7373
|404|[Sum of Left Leaves](https://leetcode.com/problems/sum-of-left-leaves/#/description)| [Python [Yu]](./tree/Yu/404_sum_of_Left_Leaves.py) | _O(N)_| _O(1)_ | Easy ||[公瑾讲解](https://youtu.be/pH-KxPcBF_4)|
7474
|270|[Closest Binary Search Tree Value](https://leetcode.com/problems/closest-binary-search-tree-value/#/description)| [Python [Yu]](./tree/Yu/270.py)| _O(N)_| _O(1)_ | Easy ||[公瑾讲解](https://youtu.be/RwvQyKJxHZk)|
7575
|563|[Binary Tree Tilt](https://leetcode.com/problems/binary-tree-tilt/#/description)| [Python [Yu]](./tree/Yu/563.py) | _O(N)_| _O(1)_ | Easy | |[公瑾讲解](https://youtu.be/47FQVP4ynk0)|
76-
76+
|538|[Convert BST to Greater Tree](https://leetcode.com/problems/convert-bst-to-greater-tree/#/description)| [Python [Yu]](./tree/Yu/538.py) | _O(N)_| _O(1)_ | Easy | |[公瑾讲解](https://youtu.be/YoEPWtXmkD4)|
7777

7878

7979
## Tree Medium

math/453.py

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#!/usr/bin/python
2+
# -*- coding: utf-8 -*-
3+
4+
# Author: Yu Zhou
5+
# 453. Minimum Moves to Equal Array Elements
6+
7+
8+
# 找到当前值和最小值的差,记录一个counter
9+
class Solution(object):
10+
def minMoves(self, nums):
11+
"""
12+
:type nums: List[int]
13+
:rtype: int
14+
"""
15+
count = 0
16+
#minu = min(nums)
17+
for num in nums:
18+
count += num - minu
19+
return count
20+
21+
22+
23+
# 第一次的试验,TLE
24+
# 思路是每次进行一次sort,然后更改N-1的值
25+
class Solution(object):
26+
def minMoves(self, nums):
27+
"""
28+
:type nums: List[int]
29+
:rtype: int
30+
"""
31+
count = 0
32+
if len(nums) == 2:
33+
return max(nums) - min(nums)
34+
35+
while not self.allEqual(nums):
36+
nums = sorted(nums)
37+
for num in xrange(len(nums)-1):
38+
num += 1
39+
count += 1
40+
return count
41+
42+
43+
44+
45+
def allEqual(self, nums):
46+
return len(set(nums)) <= 1

tree/Yu/109.py

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# Definition for singly-linked list.
2+
# class ListNode(object):
3+
# def __init__(self, x):
4+
# self.val = x
5+
# self.next = None
6+
7+
# Definition for a binary tree node.
8+
# class TreeNode(object):
9+
# def __init__(self, x):
10+
# self.val = x
11+
# self.left = None
12+
# self.right = None
13+
14+
class Solution(object):
15+
def sortedListToBST(self, head):
16+
"""
17+
:type head: ListNode
18+
:rtype: TreeNode
19+
"""
20+
# Edge
21+
if not head:
22+
return None
23+
if not head.next:
24+
return TreeNode(head.val)
25+
26+
def findMid(head):
27+
slow, fast = head, head
28+
pre = None
29+
while fast and fast.next:
30+
pre = slow
31+
slow = slow.next
32+
fast = fast.next.next
33+
# right here the slow pointer is the mid point
34+
# ex: when list is 1,2,3,4. Slow pointer stops @ 3
35+
# ex2: when list is 1,2,3,4,5 Slow pointer stops @ 3 as well
36+
pre.next = None
37+
return slow
38+
39+
40+
mid = findMid(head)
41+
root = TreeNode(mid.val)
42+
43+
root.left = self.sortedListToBST(head)
44+
root.right = self.sortedListToBST(mid.next)
45+
46+
return root

tree/Yu/538.py

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode(object):
3+
# def __init__(self, x):
4+
# self.val = x
5+
# self.left = None
6+
# self.right = None
7+
8+
class Solution(object):
9+
def convertBST(self, root):
10+
"""
11+
:type root: TreeNode
12+
:rtype: TreeNode
13+
"""
14+
# Input: The root of a Binary Search Tree like this:
15+
# 5
16+
# / \
17+
# 2 13
18+
19+
self.sum = 0
20+
21+
def dfs(root):
22+
if not root:
23+
return
24+
dfs(root.right)
25+
root.val += self.sum
26+
self.sum = root.val
27+
dfs(root.left)
28+
29+
dfs(root)
30+
return root

tree/Yu/572.py

+20-22
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
1-
#!/usr/bin/python
2-
# -*- coding: utf-8 -*-
3-
4-
# Author: Yu Zhou
5-
# 572. Subtree of Another Tree
6-
7-
# ****************
8-
# Descrption:
9-
# ****************
1+
# Definition for a binary tree node.
2+
# class TreeNode(object):
3+
# def __init__(self, x):
4+
# self.val = x
5+
# self.left = None
6+
# self.right = None
107

118
class Solution(object):
129
def isSubtree(self, s, t):
@@ -15,19 +12,20 @@ def isSubtree(self, s, t):
1512
:type t: TreeNode
1613
:rtype: bool
1714
"""
18-
#Edge
19-
if not s or not t:
20-
return False
15+
def isMatch(s, t):
16+
# 在每层的当前节点,做一套整体的比较
17+
# Edge
18+
if not s and not t:
19+
return True
20+
if not s or not t:
21+
return False
22+
if s.val == t.val:
23+
return isMatch(s.left, t.left) and isMatch(s.right, t.right)
24+
else:
25+
return False
2126

22-
#Process
23-
if self.isMatch(s,t):
27+
if isMatch(s, t):
2428
return True
25-
26-
#Recusion
29+
if not s:
30+
return False
2731
return self.isSubtree(s.left, t) or self.isSubtree(s.right, t)
28-
29-
def isMatch(self, s, t):
30-
if not s or not t:
31-
return s == t
32-
33-
return s.val == t.val and self.isMatch(s.left, t.left) and self.isMatch(s.right, t.right)

tree/Yu/617.py

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Definition for a binary tree node.
2+
# class TreeNode(object):
3+
# def __init__(self, x):
4+
# self.val = x
5+
# self.left = None
6+
# self.right = None
7+
8+
class Solution(object):
9+
def mergeTrees(self, t1, t2):
10+
"""
11+
:type t1: TreeNode
12+
:type t2: TreeNode
13+
:rtype: TreeNode
14+
"""
15+
16+
# PreOrder Append
17+
if not t1 and t2 or not t2 and t1:
18+
val1 = t1.val if t1 else 0
19+
val2 = t2.val if t2 else 0
20+
root = TreeNode(val1+val2)
21+
if not t1 and not t2:
22+
return root
23+
24+
# DFS
25+
root.left = self.mergeTrees(t1.left, t2.left)
26+
root.right = self.mergeTrees(t1.right, t2.right)
27+
28+
29+
# Solved
30+
# Definition for a binary tree node.
31+
# class TreeNode(object):
32+
# def __init__(self, x):
33+
# self.val = x
34+
# self.left = None
35+
# self.right = None
36+
37+
class Solution(object):
38+
def mergeTrees(self, t1, t2):
39+
"""
40+
:type t1: TreeNode
41+
:type t2: TreeNode
42+
:rtype: TreeNode
43+
"""
44+
if t2 and not t1:
45+
return t2
46+
if t1 and not t2:
47+
return t1
48+
49+
if t1 and t2:
50+
root = TreeNode(t1.val + t2.val)
51+
root.left = self.mergeTrees(t1.left, t2.left)
52+
root.right = self.mergeTrees(t1.right, t2.right)
53+
return root

try.py

-6
This file was deleted.

0 commit comments

Comments
 (0)