二分木で実行できる操作であるさまざまな機能を書き留めています。
私は、この関数の実行時間を知りたいのですが、それらを取り除こうとしています:
getMaxDepth(Tree) //What can be the time complexity here?
if Tree.root = NIL return 0 // BaseCase
leftDepth := 1 + getMaxDepth(Tree.root.left)
rightDepth := 1 + getMaxDepth(Tree.root.right)
if leftDepth > rightDepth then return leftDepth;
else return rightDepth;
internalNodeCount(Node n) // And here?
if isLeaf(n) then return 0
return 1 + internalNodeCount(n.left) + internalNodeCount(n.right)
isLeaf(Node n)
return n=NIL OR (n.left=NIL AND n.right=nil);
GetMaxDepth
ノードごとにツリー全体を再帰的にトラバースする必要があるため、時間の複雑さは O(n) であると想定しています....良い説明は何ですか?
InternalNodeCount 同じ理由で同じ複雑さ O(n) だと思います.....