首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
课程
专栏·文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
萝尾鳍
获赞
8
粉丝
0
关注
5
看过 TA
0
Technische Universität München
2021
算法工程师
IP属地:北京
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑萝尾鳍吗?
发布(3)
刷题
萝尾鳍
2020-11-26 20:34
算法工程师
自顶向下递归法
由于中序遍历二叉树即可将搜索二叉树排序,因此我们只需要将二叉树最左端的结点记作双向列表的头,中序遍历二叉树的同时依次将结点接入双向列表的尾端,并同时更新指向列表的尾端的指针便可。列表的头尾使用类的成员变量来记录。 于是可以分析出递归三部曲: 递归函数作用:中序遍历二叉树,将当前结点接入双向列表尾端并更新指向尾部的指针,返回头指针 递归终止条件:当前结点为空时,返回列表的头指针 下一次递归:按左中右访问结点 由于主函数和递归函数的输入一致,所以可以将递归函数合并入主函数。 class Solution { TreeNode* tail = nullptr; //指向列表的头 ...
0
点赞
评论
收藏
转发
萝尾鳍
2020-11-22 18:23
算法工程师
利用短路求值一行代码递归
这种根据条件提前终止递归的题目都可以利用短路求值写出很简洁的代码。 递归三部曲: 递归函数功能:输入两个指针,左右指针分别按中左右,中右左遍历树。如果为对称树,返回true,否则返回false。 递归终止条件:如果两个指针都为空,返回true。否则如果两指针不同时为空,或两指针值不相等,或下一步递归结果为false,返回false。 下一步递归:当两指针不为空且值相等时,左右指针分别按左右,右左的顺序访问下一个结点 class Solution { public: bool preorder(TreeNode* pRight, TreeNode* pLeft) { ...
0
点赞
评论
收藏
转发
萝尾鳍
2020-11-22 02:50
已编辑
算法工程师
利用短路求值的递归法极简c++代码
一行短路求值搞定中序遍历递归函数,同时完成判断是否是第k小,以及当碰到第k小结点时保存该结点的指针的功能。 class Solution { public: int i=0; TreeNode* ret=nullptr; bool inorder(TreeNode* pRoot, int k) { return ((pRoot->left && inorder(pRoot->left, k)) || (++i==k && (ret=pRoot))|| ...
0
点赞
评论
收藏
转发
1
工具箱
TA的圈子
暂未加入圈子
TA的圈子
TA的笔记
暂无笔记
TA的笔记
登录
0
天
已登录
0
天
连续登录
0
人
今日访客
牛客网
牛客企业服务