From 60d09e7f0a9df900bcd594af918f3b4c28742905 Mon Sep 17 00:00:00 2001 From: 0xff-dev Date: Sun, 23 Feb 2025 16:29:59 +0800 Subject: [PATCH] Add solution and test-cases for problem 889 --- .../1.jpg | Bin 0 -> 15330 bytes .../README.md | 27 ++++++------- .../Solution.go | 38 +++++++++++++++++- .../Solution_test.go | 37 ++++++++++++----- 4 files changed, 74 insertions(+), 28 deletions(-) create mode 100644 leetcode/801-900/0889.Construct-Binary-Tree-from-Preorder-and-Postorder-Traversal/1.jpg diff --git a/leetcode/801-900/0889.Construct-Binary-Tree-from-Preorder-and-Postorder-Traversal/1.jpg b/leetcode/801-900/0889.Construct-Binary-Tree-from-Preorder-and-Postorder-Traversal/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3ae97b5f8b861dc00107d780077aac42b4fabecc GIT binary patch literal 15330 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 literal 0 HcmV?d00001 diff --git a/leetcode/801-900/0889.Construct-Binary-Tree-from-Preorder-and-Postorder-Traversal/README.md b/leetcode/801-900/0889.Construct-Binary-Tree-from-Preorder-and-Postorder-Traversal/README.md index 5d6551c82..59c80e988 100644 --- a/leetcode/801-900/0889.Construct-Binary-Tree-from-Preorder-and-Postorder-Traversal/README.md +++ b/leetcode/801-900/0889.Construct-Binary-Tree-from-Preorder-and-Postorder-Traversal/README.md @@ -1,28 +1,25 @@ # [889.Construct Binary Tree from Preorder and Postorder Traversal][title] -> [!WARNING|style:flat] -> This question is temporarily unanswered if you have good ideas. Welcome to [Create Pull Request PR](https://github.com/kylesliu/awesome-golang-algorithm) - ## Description +Given two integer arrays, `preorder` and `postorder` where preorder is the preorder traversal of a binary tree of **distinct** values and `postorder` is the postorder traversal of the same tree, reconstruct and return the binary tree. + +If there exist multiple answers, you can **return any** of them. + +**Example 1:** -**Example 1:** +![1](./1.jpg) ``` -Input: a = "11", b = "1" -Output: "100" +Input: preorder = [1,2,4,5,3,6,7], postorder = [4,5,2,6,7,3,1] +Output: [1,2,3,4,5,6,7] ``` -## 题意 -> ... +**Example 2:** -## 题解 - -### 思路1 -> ... -Construct Binary Tree from Preorder and Postorder Traversal -```go ``` - +Input: preorder = [1], postorder = [1] +Output: [1] +``` ## 结语 diff --git a/leetcode/801-900/0889.Construct-Binary-Tree-from-Preorder-and-Postorder-Traversal/Solution.go b/leetcode/801-900/0889.Construct-Binary-Tree-from-Preorder-and-Postorder-Traversal/Solution.go index d115ccf5e..6eb9d9c2e 100644 --- a/leetcode/801-900/0889.Construct-Binary-Tree-from-Preorder-and-Postorder-Traversal/Solution.go +++ b/leetcode/801-900/0889.Construct-Binary-Tree-from-Preorder-and-Postorder-Traversal/Solution.go @@ -1,5 +1,39 @@ package Solution -func Solution(x bool) bool { - return x +type TreeNode struct { + Val int + Left *TreeNode + Right *TreeNode +} + +func Solution(preorder []int, postorder []int) *TreeNode { + if len(preorder) == 0 { + return nil + } + root := &TreeNode{ + Val: preorder[0], + } + if len(preorder) == 1 { + return root + } + + postIndex := 0 + next := preorder[1] + for i := range postorder { + if postorder[i] == next { + postIndex = i + break + } + } + preIndex := 0 + m := map[int]int{} + for i, n := range preorder { + m[n] = i + } + for i := 0; i <= postIndex; i++ { + preIndex = max(preIndex, m[postorder[i]]) + } + root.Left = Solution(preorder[1:preIndex+1], postorder[:postIndex+1]) + root.Right = Solution(preorder[preIndex+1:], postorder[postIndex+1:len(postorder)-1]) + return root } diff --git a/leetcode/801-900/0889.Construct-Binary-Tree-from-Preorder-and-Postorder-Traversal/Solution_test.go b/leetcode/801-900/0889.Construct-Binary-Tree-from-Preorder-and-Postorder-Traversal/Solution_test.go index 14ff50eb4..a9526eb30 100644 --- a/leetcode/801-900/0889.Construct-Binary-Tree-from-Preorder-and-Postorder-Traversal/Solution_test.go +++ b/leetcode/801-900/0889.Construct-Binary-Tree-from-Preorder-and-Postorder-Traversal/Solution_test.go @@ -9,31 +9,46 @@ import ( func TestSolution(t *testing.T) { // 测试用例 cases := []struct { - name string - inputs bool - expect bool + name string + preorder, postorder []int + expect *TreeNode }{ - {"TestCase", true, true}, - {"TestCase", true, true}, - {"TestCase", false, false}, + {"TestCase1", []int{1, 2, 4, 5, 3, 6, 7}, []int{4, 5, 2, 6, 7, 3, 1}, &TreeNode{ + Val: 1, + Left: &TreeNode{ + Val: 2, + Left: &TreeNode{ + Val: 4, + }, + Right: &TreeNode{Val: 5}, + }, + Right: &TreeNode{ + Val: 3, + Left: &TreeNode{ + Val: 6, + }, + Right: &TreeNode{Val: 7}, + }, + }}, + {"TestCase2", []int{1}, []int{1}, &TreeNode{Val: 1}}, } // 开始测试 for i, c := range cases { t.Run(c.name+" "+strconv.Itoa(i), func(t *testing.T) { - got := Solution(c.inputs) + got := Solution(c.preorder, c.postorder) if !reflect.DeepEqual(got, c.expect) { - t.Fatalf("expected: %v, but got: %v, with inputs: %v", - c.expect, got, c.inputs) + t.Fatalf("expected: %v, but got: %v, with inputs: %v %v", + c.expect, got, c.preorder, c.postorder) } }) } } -// 压力测试 +// 压力测试 func BenchmarkSolution(b *testing.B) { } -// 使用案列 +// 使用案列 func ExampleSolution() { }