leetcode-master
leetcode-master copied to clipboard
“ACM模式如何构建二叉树”建树的过程不够严谨
现有的代码仅适用于满二叉树的情况与部分完全二叉树。
失败示例1:完全二叉树 [1, 2, 3, 4]
for (int i = 0; i * 2 + 2 < vec.size(); i++) {
当 i=1 时,i*2+2 < vec.size()不满足,循环结束,但并没有建立正确的树。
失败示例2:普通二叉树[4,1,6,0,2,null,7,null,null,null,3,null,8]
对于值为7的结点,其子节点不正确,失败原因与失败示例1一致
以数据[4,1,6,0,2,null,7,null,null,null,3,null,8]为例,在LeetCode中,其后台构造树的规则是这样的: 这一个数组是基于层序遍历的,可分为如下四层,除第一层外,每一层都是上一层中非空结点的左右结点。 第一层 4 第二层 1 6 第三层 0 2 null 7 第四层null null null 3 null 8 在这样的约定下,一个数组是可以定义一棵唯一的树。
已经修改:https://github.com/youngyangyang04/leetcode-master/pull/1578/files