mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 08:50:15 +08:00
Merge pull request #1578 from wjchahaha/master
更改ACM模式下如何构建二叉树BUG,修改java&C++代码.
This commit is contained in:
@ -57,11 +57,18 @@ TreeNode* construct_binary_tree(const vector<int>& vec) {
|
||||
if (i == 0) root = node;
|
||||
}
|
||||
// 遍历一遍,根据规则左右孩子赋值就可以了
|
||||
// 注意这里 结束规则是 i * 2 + 2 < vec.size(),避免空指针
|
||||
for (int i = 0; i * 2 + 2 < vec.size(); i++) {
|
||||
// 注意这里 结束规则是 i * 2 + 1 < vec.size(),避免空指针
|
||||
// 为什么结束规则不能是i * 2 + 2 < arr.length呢?
|
||||
// 如果i * 2 + 2 < arr.length 是结束条件
|
||||
// 那么i * 2 + 1这个符合条件的节点就被忽略掉了
|
||||
// 例如[2,7,9,-1,1,9,6,-1,-1,10] 这样的一个二叉树,最后的10就会被忽略掉
|
||||
// 遍历一遍,根据规则左右孩子赋值就可以了
|
||||
|
||||
for (int i = 0; i * 2 + 1 < vec.size(); i++) {
|
||||
if (vecTree[i] != NULL) {
|
||||
// 线性存储转连式存储关键逻辑
|
||||
vecTree[i]->left = vecTree[i * 2 + 1];
|
||||
if(i * 2 + 2 < vec.size())
|
||||
vecTree[i]->right = vecTree[i * 2 + 2];
|
||||
}
|
||||
}
|
||||
@ -114,9 +121,10 @@ TreeNode* construct_binary_tree(const vector<int>& vec) {
|
||||
vecTree[i] = node;
|
||||
if (i == 0) root = node;
|
||||
}
|
||||
for (int i = 0; i * 2 + 2 < vec.size(); i++) {
|
||||
for (int i = 0; i * 2 + 1 < vec.size(); i++) {
|
||||
if (vecTree[i] != NULL) {
|
||||
vecTree[i]->left = vecTree[i * 2 + 1];
|
||||
if(i * 2 + 2 < vec.size())
|
||||
vecTree[i]->right = vecTree[i * 2 + 2];
|
||||
}
|
||||
}
|
||||
@ -249,12 +257,18 @@ public class Solution {
|
||||
}
|
||||
}
|
||||
// 遍历一遍,根据规则左右孩子赋值就可以了
|
||||
// 注意这里 结束规则是 i * 2 + 2 < arr.length,避免空指针
|
||||
for (int i = 0; i * 2 + 2 < arr.length; i++) {
|
||||
// 注意这里 结束规则是 i * 2 + 1 < arr.length,避免空指针
|
||||
// 为什么结束规则不能是i * 2 + 2 < arr.length呢?
|
||||
// 如果i * 2 + 2 < arr.length 是结束条件
|
||||
// 那么i * 2 + 1这个符合条件的节点就被忽略掉了
|
||||
// 例如[2,7,9,-1,1,9,6,-1,-1,10] 这样的一个二叉树,最后的10就会被忽略掉
|
||||
for (int i = 0; i * 2 + 1 < arr.length; i++) {
|
||||
TreeNode node = treeNodeList.get(i);
|
||||
if (node != null) {
|
||||
// 线性存储转连式存储关键逻辑
|
||||
node.left = treeNodeList.get(2 * i + 1);
|
||||
// 再次判断下 不忽略任何一个节点
|
||||
if(i * 2 + 2 < arr.length)
|
||||
node.right = treeNodeList.get(2 * i + 2);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user