mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 00:43:04 +08:00
增加 0222.完全二叉树的节点个数 go版 (新增利用完全二叉树特性的递归解法)
新增利用完全二叉树特性的递归解法
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:
|
||||||
|
Reference in New Issue
Block a user