From d4ad594c2fe5422ea43e02c1c997e214627d49bb Mon Sep 17 00:00:00 2001 From: 0xff-dev Date: Wed, 18 Jun 2025 09:16:44 +0800 Subject: [PATCH] Add solution and test-cases for problem 3319 --- .../1.png | Bin 0 -> 26837 bytes .../2.png | Bin 0 -> 11997 bytes .../3.png | Bin 0 -> 9168 bytes .../README.md | 53 ++++++++++++---- .../Solution.go | 49 +++++++++++++- .../Solution_test.go | 60 +++++++++++++++--- 6 files changed, 137 insertions(+), 25 deletions(-) create mode 100644 leetcode/3301-3400/3319.K-th-Largest-Perfect-Subtree-Size-in-Binary-Tree/1.png create mode 100644 leetcode/3301-3400/3319.K-th-Largest-Perfect-Subtree-Size-in-Binary-Tree/2.png create mode 100644 leetcode/3301-3400/3319.K-th-Largest-Perfect-Subtree-Size-in-Binary-Tree/3.png diff --git a/leetcode/3301-3400/3319.K-th-Largest-Perfect-Subtree-Size-in-Binary-Tree/1.png b/leetcode/3301-3400/3319.K-th-Largest-Perfect-Subtree-Size-in-Binary-Tree/1.png new file mode 100644 index 0000000000000000000000000000000000000000..5da539460f5d541adbdb864f06f5b027e0ea69fe GIT binary patch literal 26837 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 YNHH;6wpO|uDj$NN?KIy}V(1$6e+Gdb=Kufz literal 0 HcmV?d00001 diff --git a/leetcode/3301-3400/3319.K-th-Largest-Perfect-Subtree-Size-in-Binary-Tree/2.png b/leetcode/3301-3400/3319.K-th-Largest-Perfect-Subtree-Size-in-Binary-Tree/2.png new file mode 100644 index 0000000000000000000000000000000000000000..8f38eba6023b07e8fb1247d21cd71325726267a5 GIT binary patch literal 11997 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 [!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 -**Example 1:** +You are given the `root` of a **binary tree** and an integer `k`. + +Return an integer denoting the size of the `kth` **largest perfect binary subtree**, or `-1` if it doesn't exist. + +A **perfect binary tree** is a tree where all leaves are on the same level, and every parent has two children. + +**Example 1:** + +![1](./1.png) ``` -Input: a = "11", b = "1" -Output: "100" +Input: root = [5,3,6,5,2,5,7,1,8,null,null,6,8], k = 2 + +Output: 3 + +Explanation: + +The roots of the perfect binary subtrees are highlighted in black. Their sizes, in non-increasing order are [3, 3, 1, 1, 1, 1, 1, 1]. +The 2nd largest size is 3. ``` -## 题意 -> ... +**Example 2:** -## 题解 +![2](./2.png) -### 思路1 -> ... -K-th Largest Perfect Subtree Size in Binary Tree -```go ``` +Input: root = [1,2,3,4,5,6,7], k = 1 + +Output: 7 + +Explanation: +The sizes of the perfect binary subtrees in non-increasing order are [7, 3, 3, 1, 1, 1, 1]. The size of the largest perfect binary subtree is 7. +``` + +**Example 3:** + +![3](./3.png) + +``` +Input: root = [1,2,3,null,4], k = 3 + +Output: -1 + +Explanation: + +The sizes of the perfect binary subtrees in non-increasing order are [1, 1]. There are fewer than 3 perfect binary subtrees. +``` ## 结语 diff --git a/leetcode/3301-3400/3319.K-th-Largest-Perfect-Subtree-Size-in-Binary-Tree/Solution.go b/leetcode/3301-3400/3319.K-th-Largest-Perfect-Subtree-Size-in-Binary-Tree/Solution.go index d115ccf5e..2b6668c23 100644 --- a/leetcode/3301-3400/3319.K-th-Largest-Perfect-Subtree-Size-in-Binary-Tree/Solution.go +++ b/leetcode/3301-3400/3319.K-th-Largest-Perfect-Subtree-Size-in-Binary-Tree/Solution.go @@ -1,5 +1,50 @@ package Solution -func Solution(x bool) bool { - return x +import "sort" + +type TreeNode struct { + Val int + Left *TreeNode + Right *TreeNode +} + +func Solution(root *TreeNode, k int) int { + var dfs func(*TreeNode) int + count := make(map[int]int) + dfs = func(cur *TreeNode) int { + if cur == nil { + return -1 + } + if cur.Left == nil && cur.Right == nil { + count[1]++ + // leaf + return 1 + } + left := dfs(cur.Left) + right := dfs(cur.Right) + + if left != -1 && left == right { + count[left+right+1]++ + return left + right + 1 + } + return -1 + } + dfs(root) + keys := make([]int, 0) + for i := range count { + keys = append(keys, i) + } + + sort.Slice(keys, func(i, j int) bool { + return keys[i] > keys[j] + }) + var cnt int + for _, n := range keys { + cnt = count[n] + if cnt >= k { + return n + } + k -= cnt + } + return -1 } diff --git a/leetcode/3301-3400/3319.K-th-Largest-Perfect-Subtree-Size-in-Binary-Tree/Solution_test.go b/leetcode/3301-3400/3319.K-th-Largest-Perfect-Subtree-Size-in-Binary-Tree/Solution_test.go index 14ff50eb4..c64b4617e 100644 --- a/leetcode/3301-3400/3319.K-th-Largest-Perfect-Subtree-Size-in-Binary-Tree/Solution_test.go +++ b/leetcode/3301-3400/3319.K-th-Largest-Perfect-Subtree-Size-in-Binary-Tree/Solution_test.go @@ -10,30 +10,70 @@ func TestSolution(t *testing.T) { // 测试用例 cases := []struct { name string - inputs bool - expect bool + inputs *TreeNode + k int + expect int }{ - {"TestCase", true, true}, - {"TestCase", true, true}, - {"TestCase", false, false}, + {"TestCase1", &TreeNode{ + Val: 5, + Left: &TreeNode{ + Val: 3, + Left: &TreeNode{ + Val: 5, + Left: &TreeNode{Val: 1}, + Right: &TreeNode{Val: 8}, + }, + Right: &TreeNode{Val: 2}, + }, + Right: &TreeNode{ + Val: 6, + Left: &TreeNode{ + Val: 5, + Left: &TreeNode{Val: 6}, + Right: &TreeNode{Val: 8}, + }, + Right: &TreeNode{Val: 7}, + }, + }, 2, 3}, + {"TestCase1", &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}, + }, + }, 1, 7}, + {"TestCase3", &TreeNode{ + Val: 1, + Left: &TreeNode{ + Val: 2, + Right: &TreeNode{Val: 4}, + }, + Right: &TreeNode{Val: 3}, + }, 3, -1}, } // 开始测试 for i, c := range cases { t.Run(c.name+" "+strconv.Itoa(i), func(t *testing.T) { - got := Solution(c.inputs) + got := Solution(c.inputs, c.k) 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.inputs, c.k) } }) } } -// 压力测试 +// 压力测试 func BenchmarkSolution(b *testing.B) { } -// 使用案列 +// 使用案列 func ExampleSolution() { }