Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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‎

Lines changed: 1 addition & 1 deletion
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‎

Lines changed: 46 additions & 0 deletions
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‎

Lines changed: 46 additions & 0 deletions
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‎

Lines changed: 30 additions & 0 deletions
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‎

Lines changed: 20 additions & 22 deletions
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+
ifnots:
30+
returnFalse
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‎

Lines changed: 53 additions & 0 deletions
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‎

Lines changed: 0 additions & 6 deletions
This file was deleted.

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /