欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

剑指OfferII043.往完全二叉树添加节点

时间:2023-05-28
题目

力扣

思路 队列

维护一个队列,插入二叉树的节点,根据完全二叉树的性质,不断把左右节点都存在的节点pop出来,使得队列中只存在没有左子树或右子树的节点。插入节点时,如果左子树是空,就插入左子树;如果右子树是空,就插入右子树,并把当前节点的左右子树push进队列,把当前节点pop出来。

代码

class CBTInserter {public: TreeNode* root; queue q; CBTInserter(TreeNode* root) { this->root = root; q.push(root); while(q.front()->left != nullptr && q.front()->right != nullptr){ auto cur = q.front(); q.pop(); q.push(cur->left); q.push(cur->right); } } int insert(int v) { TreeNode* node = new TreeNode(v); TreeNode* cur = q.front(); if(cur->left == nullptr){ cur->left = node; }else{ cur->right = node; q.pop(); q.push(cur->left); q.push(cur->right); } return cur->val; } TreeNode* get_root() { return root; }};

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。