mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-07 15:45:40 +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:
|
||||
|
Reference in New Issue
Block a user