0x00トピック
完全二叉树
ツリーのルートノードを提供しroot
ますツリーのルートを見つけます节点个数
0x01のアイデア
某个
ノードの計算节点个数
:サブツリーの計算を計算し、サブツリーの計算にノードの数を追加します左
节点个数
右
节点个数
当前
1
左右のサブツリー
の計算は->某个
ノード。节点个数
これが再帰になります。
終了条件は次のとおりです。节点为空
0x02ソリューション
言語:Swift
ツリーノード:TreeNode
public class TreeNode {
public var val: Int
public var left: TreeNode?
public var right: TreeNode?
public init() { self.val = 0; self.left = nil; self.right = nil; }
public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; }
public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
self.val = val
self.left = left
self.right = right
}
}
解決:
func countNodes(_ root: TreeNode?) -> Int {
// 结束条件
guard let r = root else { return 0 }
// 左 子树的 节点个数
let left = countNodes(r.left)
// 右 子树的 节点个数
let right = countNodes(r.right)
// 当前节点树的 节点个数
return left + right + 1
}