Skip to content

Commit 6f5d921

Browse files
committed
2019.12.5
1 parent c6a4f17 commit 6f5d921

File tree

55 files changed

+999
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+999
-0
lines changed

102-二叉树的层次遍历.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution {
2+
public:
3+
void levelorder(vector<vector<int>>& myvector, TreeNode* root, int depth){
4+
if(root){
5+
if(depth >= myvector.size())
6+
myvector.push_back(vector<int> {});
7+
8+
myvector[depth].push_back(root->val);
9+
levelorder(myvector, root->left, depth + 1);
10+
levelorder(myvector, root->right, depth + 1);
11+
}
12+
}
13+
14+
vector<vector<int>> levelOrder(TreeNode* root) {
15+
vector<vector<int>> result;
16+
levelorder(result, root, 0);
17+
return result;
18+
}
19+
};

102-二叉树的层次遍历.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution:
2+
def levelOrder(self, root: TreeNode) -> List[List[int]]:
3+
import queue
4+
5+
result = []
6+
myqueue = queue.Queue()
7+
myqueue.put((root, 0))
8+
9+
while not myqueue.empty():
10+
node, depth = myqueue.get()
11+
if node:
12+
if depth > len(result) - 1:
13+
result.append([node.val])
14+
else:
15+
result[depth].append(node.val)
16+
myqueue.put((node.left, depth + 1))
17+
myqueue.put((node.right, depth + 1))
18+
19+
return result

104-二叉树的最大深度.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Solution {
2+
public:
3+
int maxDepth(TreeNode* root) {
4+
5+
stack<pair<TreeNode*, int>> mystack;
6+
TreeNode* node = root;
7+
int depth = 0;
8+
int max_depth = 0;
9+
mystack.push(pair<TreeNode*, int>(root, 0));
10+
11+
while(!mystack.empty()){
12+
node = mystack.top().first;
13+
depth = mystack.top().second;
14+
mystack.pop();
15+
max_depth = max(depth, max_depth);
16+
if(!node)
17+
continue;
18+
mystack.push(pair<TreeNode*, int>(node->left, depth + 1));
19+
mystack.push(pair<TreeNode*, int>(node->right, depth + 1));
20+
}
21+
22+
return max_depth;
23+
}
24+
};

104-二叉树的最大深度.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class Solution:
2+
def maxDepth(self, root: TreeNode) -> int:
3+
import queue
4+
5+
myqueue = queue.Queue()
6+
myqueue.put((root, 0))
7+
8+
while not myqueue.empty():
9+
node, depth = myqueue.get()
10+
if not node:
11+
continue
12+
myqueue.put((node.left, depth + 1))
13+
myqueue.put((node.right, depth + 1))
14+
15+
return depth
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
public:
3+
TreeNode* build_tree(vector<int>& inorder, vector<int>& postorder, int a, int b, int c, int d){
4+
if(a == b)
5+
return NULL;
6+
7+
int i = a - 1;
8+
while(inorder[++i] != postorder[d - 1]);
9+
10+
TreeNode* root = new TreeNode(postorder[d - 1]);
11+
12+
root->left = build_tree(inorder, postorder, a, i, c, c + i - a);
13+
root->right = build_tree(inorder, postorder, i + 1, b, c + i - a, d - 1);
14+
15+
return root;
16+
}
17+
18+
TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
19+
return build_tree(inorder, postorder, 0, inorder.size(), 0, postorder.size());
20+
}
21+
};
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution:
2+
def build_tree(self, inorder, postorder, a, b, c, d):
3+
if a == b:
4+
return None
5+
6+
i = inorder.index(postorder[d - 1])
7+
8+
root = TreeNode(postorder[d - 1])
9+
10+
root.left = self.build_tree(inorder, postorder, a, i, c, c + i - a)
11+
root.right = self.build_tree(inorder, postorder, i + 1, b, c + i - a, d - 1)
12+
13+
return root
14+
15+
def buildTree(self, inorder: List[int], postorder: List[int]) -> TreeNode:
16+
return self.build_tree(inorder, postorder, 0, len(inorder), 0, len(postorder))
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
public:
3+
TreeNode* build_tree(vector<int>& preorder, vector<int>& inorder, int a, int b, int c, int d){
4+
if(a == b)
5+
return NULL;
6+
7+
TreeNode* root = new TreeNode(preorder[a]);
8+
9+
int i = c - 1;
10+
while(inorder[++i] != preorder[a]);
11+
12+
root->left = build_tree(preorder, inorder, a + 1, a + i - c + 1, c, i);
13+
root->right = build_tree(preorder, inorder, a + i - c + 1, b, i + 1, d);
14+
15+
return root;
16+
}
17+
18+
TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) {
19+
return build_tree(preorder, inorder, 0, preorder.size(), 0, inorder.size());
20+
}
21+
};
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution:
2+
def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode:
3+
if not preorder:
4+
return None
5+
6+
root = TreeNode(preorder[0])
7+
8+
boundary = inorder.index(preorder[0])
9+
10+
root.left = self.buildTree(preorder[1:boundary + 1], inorder[:boundary])
11+
root.right = self.buildTree(preorder[boundary + 1:], inorder[boundary + 1:])
12+
13+
return root
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
class Solution {
2+
public:
3+
TreeNode* sorted_array_to_bst(vector<int>& nums, int left, int right){
4+
if(left > right)
5+
return NULL;
6+
7+
if(left == right){
8+
TreeNode* root = new TreeNode(nums[left]);
9+
return root;
10+
}
11+
12+
int middle = left + (right - left) / 2;
13+
TreeNode* root = new TreeNode(nums[middle]);
14+
15+
root->left = sorted_array_to_bst(nums, left, middle - 1);
16+
root->right = sorted_array_to_bst(nums, middle + 1, right);
17+
18+
return root;
19+
}
20+
21+
TreeNode* sortedArrayToBST(vector<int>& nums) {
22+
return sorted_array_to_bst(nums, 0, nums.size() - 1);
23+
}
24+
};
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
class Solution:
2+
def sortedArrayToBST(self, nums: List[int]) -> TreeNode:
3+
4+
def sorted_array_to_bst(nums, left, right):
5+
if left > right:
6+
return None
7+
8+
if left == right:
9+
return TreeNode(nums[left])
10+
11+
middle = (left + right) // 2
12+
root = TreeNode(nums[middle])
13+
14+
root.left = sorted_array_to_bst(nums, left, middle - 1)
15+
root.right = sorted_array_to_bst(nums, middle + 1, right)
16+
17+
return root
18+
19+
return sorted_array_to_bst(nums, 0, len(nums) - 1)

0 commit comments

Comments
 (0)