中序遍历简单变形可以得到求第K大的算法O(nlogn)
前序遍历可以在O(n)时间内完成二叉树的构建,因为在构建第二个二叉树的时候,插入一个节点不需要从头开始,要添加的节点的父节点是已知的,所以这部分logn的时间变成O(1)的时间。
前序遍历可以在O(n)时间内完成二叉树的构建,因为在构建第二个二叉树的时候,插入一个节点不需要从头开始,要添加的节点的父节点是已知的,所以这部分logn的时间变成O(1)的时间。
2021-01-04
这个demo的数组 还是过于巧合
[8, 3 10, 1, 6 , 14, 4, 7, 13]
这个刚好是前序遍历,如果数组里面的元素没有规则,
那么势必就会存在 需要在中间插入节点的情况,
所以这个节点构造的函数 还是太过于理想
[8, 3 10, 1, 6 , 14, 4, 7, 13]
这个刚好是前序遍历,如果数组里面的元素没有规则,
那么势必就会存在 需要在中间插入节点的情况,
所以这个节点构造的函数 还是太过于理想
2020-10-18
我用自己的电脑测试发现。
构建二叉树的时间 大约是 三种排序时间的2-3倍。
三种排序之间的平均时间差不大。
而且电脑最多可以操作1千万个数。再多,浏览器就崩溃了。
构建二叉树的时间 大约是 三种排序时间的2-3倍。
三种排序之间的平均时间差不大。
而且电脑最多可以操作1千万个数。再多,浏览器就崩溃了。
2020-09-29
最新回答 / qq_我爱看小说_04248608
中序遍历的顺序就是: 每次遍历一个节点时,先获取左子节点的值,再读取当前节点的值,最后是右子节点;因为左右子节点可能还有子元素,所以要递归调用“inOrderTraverseNode”这个方法,获取子元素的值;“callback”方法则是将获取到的值传递到外部;
2020-09-05
这个真还是有点绕,主要是removeNode这个函数,在某个子树中删除某个节点,参数1:子树的根节点, 参数2:删除值为多少的节点, 返回删除该节点后的子树根节点
2020-06-17
前序 父* -> 左 -> 父 -> 右 ->父
中序 父 -> 左 -> 父* -> 右 ->父
后序 父 -> 左 -> 父 -> 右 ->父*
中序 父 -> 左 -> 父* -> 右 ->父
后序 父 -> 左 -> 父 -> 右 ->父*
2020-06-17
最新回答 / qq_慕姐7156285
第一 判断是否等于null 用=== 不是 ==第二node.left = newNode.key;不对 是node.left = newNode;同理right也是
2020-02-07