Skip to content

Commit d8382fa

Browse files
committed
feat: 0105.Construct-Binary-Tree-from-Preorder-and-Inorder-Traversal
1 parent cea1ba9 commit d8382fa

File tree

3 files changed

+176
-0
lines changed

3 files changed

+176
-0
lines changed
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
---
2+
title: 105. Construct Binary Tree from Preorder and Inorder Traversal
3+
subtitle: "https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/description/"
4+
date: 2024-02-20T16:56:00+08:00
5+
lastmod: 2024-02-20T16:56:00+08:00
6+
draft: false
7+
author: "Kimi.Tsai"
8+
authorLink: "https://kimi0230.github.io/"
9+
description: "0105.Construct-Binary-Tree-from-Preorder-and-Inorder-Traversal"
10+
license: ""
11+
images: []
12+
13+
tags: [LeetCode, Go, Medium, Construct Binary Tree from Preorder and Inorder Traversal]
14+
categories: [LeetCode]
15+
16+
featuredImage: ""
17+
featuredImagePreview: ""
18+
19+
hiddenFromHomePage: false
20+
hiddenFromSearch: false
21+
twemoji: false
22+
lightgallery: true
23+
ruby: true
24+
fraction: true
25+
fontawesome: true
26+
linkToMarkdown: false
27+
rssFullText: false
28+
29+
toc:
30+
enable: true
31+
auto: true
32+
code:
33+
copy: true
34+
maxShownLines: 200
35+
math:
36+
enable: false
37+
# ...
38+
mapbox:
39+
# ...
40+
share:
41+
enable: true
42+
# ...
43+
comment:
44+
enable: true
45+
# ...
46+
library:
47+
css:
48+
# someCSS = "some.css"
49+
# located in "assets/"
50+
# Or
51+
# someCSS = "https://cdn.example.com/some.css"
52+
js:
53+
# someJS = "some.js"
54+
# located in "assets/"
55+
# Or
56+
# someJS = "https://cdn.example.com/some.js"
57+
seo:
58+
images: []
59+
# ...
60+
---
61+
# [105. Construct Binary Tree from Preorder and Inorder Traversal](https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/description/)
62+
63+
## 題目
64+
65+
## 題目大意
66+
67+
68+
## 解題思路
69+
70+
## Big O
71+
時間複雜 : ``
72+
空間複雜 : ``
73+
74+
## 來源
75+
* https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/description/
76+
* https://leetcode.cn/problems/construct-binary-tree-from-preorder-and-inorder-traversal/description/
77+
78+
## 解答
79+
https://github.com/kimi0230/LeetcodeGolang/blob/master/Leetcode/0105.Construct-Binary-Tree-from-Preorder-and-Inorder-Traversal/main.go
80+
81+
```go
82+
/**
83+
* Definition for a binary tree node.
84+
* type TreeNode struct {
85+
* Val int
86+
* Left *TreeNode
87+
* Right *TreeNode
88+
* }
89+
*/
90+
// 時間複雜 O(), 空間複雜 O()
91+
func buildTree(preorder []int, inorder []int) *TreeNode {
92+
if len(preorder) == 0 {
93+
return nil
94+
}
95+
result := &TreeNode{preorder[0], nil, nil}
96+
97+
i := 0
98+
for ; i < len(inorder); i++ {
99+
if preorder[0] == inorder[i] {
100+
break
101+
}
102+
}
103+
result.Left = buildTree(preorder[1:i+1], inorder[:i])
104+
result.Right = buildTree(preorder[i+1:], inorder[i+1:])
105+
106+
return result
107+
}
108+
```
109+
110+
## Benchmark
111+
112+
```sh
113+
114+
```
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package constructbinarytreefrompreorderandinordertraversal
2+
3+
/**
4+
* Definition for a binary tree node.
5+
* type TreeNode struct {
6+
* Val int
7+
* Left *TreeNode
8+
* Right *TreeNode
9+
* }
10+
*/
11+
// 時間複雜 O(), 空間複雜 O()
12+
func buildTree(preorder []int, inorder []int) *TreeNode {
13+
if len(preorder) == 0 {
14+
return nil
15+
}
16+
result := &TreeNode{preorder[0], nil, nil}
17+
18+
i := 0
19+
for ; i < len(inorder); i++ {
20+
if preorder[0] == inorder[i] {
21+
break
22+
}
23+
}
24+
result.Left = buildTree(preorder[1:i+1], inorder[:i])
25+
result.Right = buildTree(preorder[i+1:], inorder[i+1:])
26+
27+
return result
28+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package
2+
3+
import "testing"
4+
5+
var tests = []struct {
6+
arg1 string
7+
want int
8+
}{
9+
{
10+
"bbbab",
11+
4,
12+
},
13+
}
14+
15+
func TestLongestPalindromeSubseq(t *testing.T) {
16+
for _, tt := range tests {
17+
// if got := ReverseList(tt.arg1); !reflect.DeepEqual(got, tt.want) {
18+
if got := LongestPalindromeSubseq(tt.arg1); got != tt.want {
19+
t.Errorf("got = %v, want = %v", got, tt.want)
20+
}
21+
}
22+
}
23+
24+
func BenchmarkLongestPalindromeSubseq(b *testing.B) {
25+
b.ResetTimer()
26+
for i := 0; i < b.N; i++ {
27+
LongestPalindromeSubseq(tests[0].arg1)
28+
}
29+
}
30+
31+
/*
32+
go test -benchmem -run=none LeetcodeGolang/Leetcode/0354.Russian-Doll-Envelopes -bench=.
33+
34+
*/

0 commit comments

Comments
 (0)