mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +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:
|
JavaScript:
|
||||||
|
@ -351,6 +351,29 @@ class Solution:
|
|||||||
```
|
```
|
||||||
Go:
|
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:
|
JavaScript:
|
||||||
1.递归版本
|
1.递归版本
|
||||||
```javascript
|
```javascript
|
||||||
|
Reference in New Issue
Block a user