Merge pull request #420 from betNevS/master

增加 0222.完全二叉树的节点个数 go版 (新增利用完全二叉树特性的递归解法)
This commit is contained in:
程序员Carl
2021-06-22 11:19:09 +08:00
committed by GitHub
2 changed files with 47 additions and 0 deletions

View File

@ -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:

View File

@ -351,6 +351,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.递归版本
```javascript