【发布时间】:2019-11-12 19:23:55
【问题描述】:
这个问题已经在我脑海中萦绕了很多天,我希望有人能解决它。 问题:- 查找二叉树中的节点数
方法 1:-(迭代) 使用堆栈进行中序遍历。每当您从堆栈中弹出元素时,请记下它的计数,即二叉树中的节点数。
时间复杂度 - O(n)
空间复杂度 - O(n)
方法 2:-(递归)
时间复杂度 - O(n)
空间复杂度 - O(1) 或 O(n)????
我们可以递归地进行中序遍历,但是在面试中,哪种方法最适合向面试官表达......迭代还是递归?我应该考虑递归调用堆栈空间,它将空间复杂度归结为 O(n) 还是应该坚持 O(1) 空间复杂度?
【问题讨论】:
-
是的,在考虑空间复杂度时应该计算调用堆栈。请注意,两种算法的空间复杂度都是 O(h),其中 h 是树的高度;不是 O(n),其中 n 是节点数。
-
@kaya3 那么在这种情况下,为了找到节点的数量,堆栈方法也可以吗???
标签: data-structures tree tree-traversal space-complexity inorder