根据数组生成二叉树
爱吃鱼的猫 Lv2

定义二叉树

1
2
3
4
5
6
struct TreeNode{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int _val):val(_val){};
};

层序遍历产生

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <vector>
#include <queue>

int main(){
vector<int> tree = {'1','#','1','#','1','#','1','#','1'};
int length = tree.size();
queue<TreeNode*> Q;
TreeNode* root;
if(tree[0]=='1'){
root = new TreeNode(0);
Q.push(root);
}
int index = 0;
while(!Q.empty()){
int len = Q.size();
for(int i=0;i<len;i++){
TreeNode* temp = Q.front();
Q.pop();
index++;
if(index<length&&tree[index]=='1'){
temp->left = new TreeNode(0);
Q.push(temp->left);
}
index++;
if(index<length&&tree[index]=='1'){
temp->right = new TreeNode(0);
Q.push(temp->right);
}
}
}
return 0;
}
  • Post title:根据数组生成二叉树
  • Post author:爱吃鱼的猫
  • Create time:2022-04-28 09:59:45
  • Post link:https://djtang.github.io/2022/04/28/Build-tree/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
 Comments