我只是在写下不同的函数,这些函数是可以在二叉树上完成的操作。
我想知道这个函数的运行时间是多少,试图摆脱它们:
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) 出于同样的原因.....