相关疑难解决方法(0)

如何从数组表示构建不完全二叉树

如果输入是数组,则null表示没有节点。

输入:

[1, 2, 3, null, 5, null, 7]

请假设我已经检查了输入。

对于每个array[i],其父项array[i / 2]不会是null(递归地,所以 root 不能是null)。

如何构建具有这种逻辑关系的树:

   1
 /    \
2      3
 \      \ 
  5      7
Run Code Online (Sandbox Code Playgroud)

每个节点都应该由一个TreeNode对象表示:

class TreeNode {
public:
    int val;
    TreeNode *left;
    TreeNode *right;
    TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
Run Code Online (Sandbox Code Playgroud)

我在这里找到了一个博客,其中构建了一个完整的树

但是如果树如上所述不完整,如何整齐有效地完成它?

测试数据:

[输入数组]

[-64,12,18,-4,-53,null,76,null,-51,null,null,-93,3,null,-31,47,null,3,53,-81,33,4,null,-51,-44,-60,11,null,null,null,null,78,null,-35,-64,26,-81,-31,27,60,74,null,null,8,-38,47,12,-24,null,-59,-49,-11,-51,67,null,null,null,null,null,null,null,-67,null,-37,-19,10,-55,72,null,null,null,-70,17,-4,null,null,null,null,null,null,null,3,80,44,-88,-91,null,48,-90,-30,null,null,90,-34,37,null,null,73,-38,-31,-85,-31,-96,null,null,-18,67,34,72,null,-17,-77,null,56,-65,-88,-53,null,null,null,-33,86,null,81,-42,null,null,98,-40,70,-26,24,null,null,null,null,92,72,-27,null,null,null,null,null,null,-67,null,null,null,null,null,null,null,-54,-66,-36,null,-72,null,null,43,null,null,null,-92,-1,-98,null,null,null,null,null,null,null,39,-84,null,null,null,null,null,null,null,null,null,null,null,null,null,-93,null,null,null,98]

binary-tree data-structures

6
推荐指数
2
解决办法
6593
查看次数

标签 统计

binary-tree ×1

data-structures ×1