力扣235|701|450
235. 二叉搜索树的最近公共祖先 - 力扣(LeetCode)
思路
不用改树结构,直接找到空结点位置插入
类似之前的二叉树的公共祖先,由二叉树最下面进行遍历,由下往上,特别关注的是二叉搜索树是一个有序的数组,要利用这个特性
代码
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/class Solution {public:TreeNode *traversal(TreeNode *cur,TreeNode*p,TreeNode*q){if(cur==NULL) return cur;//中if(cur->val>p->val && cur->val>q->val){TreeNode *left=traversal(cur->left,p,q);if(left != NULL){return left;}}if(cur->val<p->val&&cur->val<q->val){TreeNode *right=traversal(cur->right,p,q);if(right!=NULL){return right;}}return cur;}TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {return traversal(root,p,q);}};
701. 二叉搜索树中的插入操作 - 力扣(LeetCode)
思路
转换很难:
例如插入元素10 ,需要找到末尾节点插入便可,一样的道理来插入元素15,插入元素0,插入元素6,
需要调整二叉树的结构么? 并不需要。。
只要遍历二叉搜索树,找到空节点 插入元素就可以了,那么这道题其实就简单了。
接下来就是遍历二叉搜索树的过程了。
代码
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/class Solution {private:TreeNode *parent;//找到空节点导入void traversal(TreeNode *cur,int val){if(cur==NULL){//生成节点TreeNode *node= new TreeNode(val);if(val>parent->val){parent->right=node;}else{parent->left=node;}return ;}parent=cur;if(cur->val>val) traversal(cur->left,val);if(cur->val<val) traversal(cur->right,val);return ;}public:TreeNode* insertIntoBST(TreeNode* root, int val) {parent = new TreeNode(0);if(root==NULL){root=new TreeNode(val);}traversal(root,val);return root;}};
450. 删除二叉搜索树中的节点 - 力扣(LeetCode)
思路
树的结构会改变
转换为有序数组,依次比较然后插入值,再将数组转换为二叉搜索树
重点:
有序数组转换:中序递归遍历,生成有序数组,
后序遍历转换回去二叉树?
代码
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/class Solution {public:TreeNode* deleteNode(TreeNode* root, int key) {//未找到,且遍历到空结点直接返回if(root==nullptr) return root;//找到if(root->val==key){//左右孩子为空if(root->left==nullptr && root->right==nullptr){delete root;return nullptr;}//左孩子为空,右孩子不为空else if(root->left==nullptr && root->right !=nullptr){auto retnode=root->right;delete root;return retnode;}//右孩子为空,左孩子不为空else if(root->left != nullptr && root->right==nullptr){auto retnde=root->left;delete root;return retnde;}//左右孩子都不为空else {// 右孩子作为根节点,左孩子作为右孩子的左孩子TreeNode *cur=root->right;while(cur->left){cur=cur->left;}cur->left=root->left;auto node=root->right;delete root;return node;}}if(root->val<key) root->right=deleteNode(root->right,key);if(root->val>key) root->left=deleteNode(root->left,key);return root;}};
力扣235|701|450相关推荐
- day22 二叉树| 235,701,450
235. 二叉搜索树的最近公共祖先 可以按照二叉树的最近公共祖先进行操作 也可以按照搜索树的特征,无需进行回溯,从上到下进行遍历 701.二叉搜索树中的插入操作 将固定的数值插入到合适的 ...
- 力扣235. 二叉搜索树的最近公共祖先(JavaScript)
var lowestCommonAncestor = function(root, p, q) {return dd(root,p,q) }; const dd=function(root,p,q){ ...
- leetcode(力扣)刷题笔记(c++、python)【上】
文章预览: 数组 1.二分查找 704. 二分查找 相关题目: 35.搜索插入位置 34. 在排序数组中查找元素的第一个和最后一个位置 69.x 的平方根 367.有效的完全平方数 2.双指针 27. ...
- 【力扣】数据结构入门【7天32题数据结构入门】
Frame Appendix [力扣]链表问题总结 [力扣]c++中常用命令--菜鸟专用 7天32题计划[点击加入计划] 代码 217. 存在重复元素 53. 最大子序和 1. 两数之和 88. 合并 ...
- (力扣)171.Excel表列序号(c语言)
题目 给你一个字符串 columnTitle ,表示 Excel 表格中的列名称.返回该列名称对应的列序号. 例如, A -> 1 B -> 2 C -> 3 ... Z -> ...
- LeetCode 力扣算法题解汇总,All in One
作者: 负雪明烛 id: fuxuemingzhu 个人博客: https://fuxuemingzhu.cn 关键词:LeetCode,力扣,算法,题解,汇总,解析 把自己刷过的所有题目做一个整理, ...
- 力扣学习记录(每日更新)
文章目录 引言 简单 力扣:1 两数之和 力扣:20 有效的括号 力扣:21 合并两个有序链表 力扣:22 括号生成 力扣:27 移除元素 力扣: 35 搜索插入位置 力扣:70 [爬楼梯](http ...
- 几乎刷完了力扣所有的树题,我发现了这些东西
点击蓝色"力扣加加"关注我哟 加个"星标",带你揭开算法的神秘面纱! ❝ 这是力扣加加第「28」篇原创文章 先上下本文的提纲,这个是我用 mindmap 画的一 ...
- LeetCode -- 力扣算法题解题心得 -- (个人笔记记录)持续更新~~
一.前言 正式开启数据结构+算法研究的历程,准备好一年后的面试.下面的解法不一定是最优解,只求能力提升,会定期更新~~ 二.目录 1 2 19 20 21 24 35 42 83 86 94 96 1 ...
最新文章
- vc++ 6.0下Glut的配置 及 Glut 框架介绍
- qt show widget_Qt中show()与exec()
- 关于J2EE中死锁问题的研究(2)
- Visual Studio 2010 C++ 工程文件解读
- 《南方都市报》:三鹿集团300万摆平搜索引擎?
- 表格列隐藏_WPS表格(Excel)基础编辑
- 132.分割回文串II
- 什么软件可以换电脑ip地址
- 科目二考试之侧方位停车步骤
- 查找重复姓名的SQL语句
- 史上最全的数据库面试题,面试前刷一刷
- 2020身高体重标准表儿童_婴儿身高体重对照表2020
- 【BZOJ1014】【JSOI2008】火星人prefix Splay处理区间,hash+dichotomy(二分)check出解
- 微信小程序支持windows PC版了
- 男人,女人一生要过五个关卡【曾仕强】
- Java Build工具Ant与Maven之比较
- vue上传文件,重新上传后覆盖之前文件
- 芝诺悖论------芝诺的乌龟
- row在C语言什么意义,ROWC是什么意思
- 康佳液晶电视(非智能)Mstar V56 芯片