相关疑难解决方法(0)

二叉树O(n)的InOrder树遍历的时间复杂度?

public void iterativePreorder(Node root) {
        Stack nodes = new Stack();
        nodes.push(root);

        Node currentNode;

        while (!nodes.isEmpty()) {
                currentNode = nodes.pop();
                Node right = currentNode.right();
                if (right != null) {
                        nodes.push(right);
                }
                Node left = currentNode.left();
                if (left != null) {
                        nodes.push(left);      
                }
                System.out.println("Node data: "+currentNode.data);
        }
}
Run Code Online (Sandbox Code Playgroud)

资料来源:Wiki Tree Traversal

时间复杂度是O(n)吗?如果使用递归完成时间复杂性是否相同?

新问题:如果我使用上面的代码从TreeA中找到某个节点来创建另一个树TreeB,它将拥有与TreeA一样多的节点,那么创建TreeB的复杂性将是O(n ^ 2),因为它是n个节点和每个节点会使用上面的代码,即O(n)?

java tree time-complexity

5
推荐指数
1
解决办法
2万
查看次数

保持与std :: map平行的std :: vector

最近,当我需要迭代std::map我通常std::vector从地图构建一个时,因为访问元素的复杂性是(log N)(实际上,只有当我需要通过自定义键访问元素时).

因此,我最终维护了一个std::vectorfor for for iterating我的所有元素,(因为它的复杂性是常数O(1))和一个std::map特定的检索(因为它的复杂性在迭代时是O(log n)).

这是一个正确的方法,或者我应该去std::map和忘记std::vector(你知道,对于这个特定情况).

谢谢.

c++ time-complexity

2
推荐指数
1
解决办法
123
查看次数

标签 统计

time-complexity ×2

c++ ×1

java ×1

tree ×1