mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
Merge branch 'youngyangyang04:master' into master
This commit is contained in:
@ -335,6 +335,30 @@ func countNodes(root *TreeNode) int {
|
||||
}
|
||||
```
|
||||
|
||||
利用完全二叉树特性的递归解法
|
||||
```go
|
||||
func countNodes(root *TreeNode) int {
|
||||
if root == nil {
|
||||
return 0
|
||||
}
|
||||
leftH, rightH := 0, 0
|
||||
leftNode := root.Left
|
||||
rightNode := root.Right
|
||||
for leftNode != nil {
|
||||
leftNode = leftNode.Left
|
||||
leftH++
|
||||
}
|
||||
for rightNode != nil {
|
||||
rightNode = rightNode.Right
|
||||
rightH++
|
||||
}
|
||||
if leftH == rightH {
|
||||
return (2 << leftH) - 1
|
||||
}
|
||||
return countNodes(root.Left) + countNodes(root.Right) + 1
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
JavaScript:
|
||||
|
@ -350,6 +350,29 @@ class Solution:
|
||||
|
||||
```
|
||||
Go:
|
||||
|
||||
```go
|
||||
func binaryTreePaths(root *TreeNode) []string {
|
||||
res := make([]string, 0)
|
||||
var travel func(node *TreeNode, s string)
|
||||
travel = func(node *TreeNode, s string) {
|
||||
if node.Left == nil && node.Right == nil {
|
||||
v := s + strconv.Itoa(node.Val)
|
||||
res = append(res, v)
|
||||
return
|
||||
}
|
||||
s = s + strconv.Itoa(node.Val) + "->"
|
||||
if node.Left != nil {
|
||||
travel(node.Left, s)
|
||||
}
|
||||
if node.Right != nil {
|
||||
travel(node.Right, s)
|
||||
}
|
||||
}
|
||||
travel(root, "")
|
||||
return res
|
||||
}
|
||||
```
|
||||
|
||||
JavaScript:
|
||||
1.递归版本
|
||||
|
Reference in New Issue
Block a user