解题思路:
(1)利用完全二叉树的性质
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class CBTInserter {
private:
vector<TreeNode*> vec;
public:
CBTInserter(TreeNode* root) {
vec.push_back(root);
for(int i=0;i<vec.size();i++) {
if(vec[i]->left) vec.push_back(vec[i]->left);
if(vec[i]->right) vec.push_back(vec[i]->right);
}
}
int insert(int v) {
int n=vec.size();
TreeNode *p=new TreeNode(v);
vec.push_back(p);
if(n%2==0) vec[(n-1)/2]->right=p;
else vec[(n-1)/2]->left=p;
return vec[(n-1)/2]->val;
}
TreeNode* get_root() {
return vec[0];
}
};
/**
* Your CBTInserter object will be instantiated and called as such:
* CBTInserter* obj = new CBTInserter(root);
* int param_1 = obj->insert(v);
* TreeNode* param_2 = obj->get_root();
*/

本文介绍了一种用于完全二叉树的插入器类实现,该类能够保持树的完全特性,并提供插入新节点和获取根节点的功能。通过遍历树的节点构建向量来维护树结构,确保每次插入都在正确的位置。

被折叠的 条评论
为什么被折叠?



