请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,为什么对比两棵树复杂度是 O(n ^ 3)呢?

先遍历vdom1,
然后遍历vdom2
然后拿vdom1的每个属性与vdom2的每个属性进行对比排序???这里不是对比同层级的,而是一个层级与每个层级对比?

感觉这里没太听明白。。

正在回答 回答被采纳积分+3

1回答

双越 2020-04-06 20:54:43

第一,遍历树 A ,复杂度是 O(n)

第二,遍历树 B,复杂度是 O(n)

第三,对树的节点进行排序。这是可没说是同级别的,严格的树 diff ,是各个级别的都要移动排序,所以复杂度是 O(n)

三者嵌套起来,就会 O(n^3)

1 回复 有任何疑惑可以回复我~
  • 提问者 沧海的雨季 #1
    那么React 团队优化了算法,实现 O(n)。
    
     O(n)是只比较同一层级,跟O(n^3)区别是在哪啊?
    它不用遍历树A和树B在进行比较么?
    
    这一块儿好难理解啊。。
    回复 有任何疑惑可以回复我~ 2020-04-06 22:00:35
  • 双越 回复 提问者 沧海的雨季 #2
    只在同一层级对比,而且根据 key 来判断,这样只遍历一遍即可。例如,开始遍历树 A ,遍历过程中就把树 B 的同层级节点进行对比了,待树 A 遍历完了,树 B 也就遍历完了,一遍完事儿。所以是 O(n)
    回复 有任何疑惑可以回复我~ 2020-04-06 22:32:22
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信