面试二叉树题目汇总

发布时间:2021-07-22 14:15:02



文章目录
二叉树的最大距离(即相距最远的两个叶子节点,编程之美,百度面试题)二叉树的深度重建二叉树对称二叉树(leetcode 101)二叉树的下一个节点树的子结构二叉搜索树的后序遍历序列二叉树中和为某一值的路径二叉搜索树与双向链表序列化二叉树树中两个节点的最低公共祖先二叉树的非递归遍历前序遍历(leetcode 144)中序遍历(leetcode 94)后序遍历(leetcode 145)
*衡二叉树(leetcode 110)


二叉树的最大距离(即相距最远的两个叶子节点,编程之美,百度面试题)

int HeightOfBinaryTree(BinaryTreeNode *pNode, int &nMaxDistance){
if (pNode == NULL)
return -1; //空节点的高度为-1
//递归
int nHeightOfLeftTree = HeightOfBinaryTree(pNode->m_pLeft, nMaxDistance) + 1; //左子树的的高度加1
int nHeightOfRightTree = HeightOfBinaryTree(pNode->m_pRight, nMaxDistance) + 1; //右子树的高度加1
int nDistance = nHeightOfLeftTree + nHeightOfRightTree; //距离等于左子树的高度加上右子树的高度+2
nMaxDistance = nMaxDistance > nDistance ? nMaxDistance : nDistance; //得到距离的最大值
return max(nHeightOfLeftTree, nHeightOfRightTree);
}

二叉树的深度

int TreeDepth(TreeNode *pRoot){
if(!pRoot) return 0;
int left = TreeDepth(pRoot->left);
int right = TreeDepth(pRoot->right);
return max(left, right)+1;
}

重建二叉树



对称二叉树(leetcode 101)

bool isSymmetric(TreeNode* root) {
if(!root) return true;
return isSymmetric(root->left, root->right);
}
bool isSymmetric(TreeNode *left, TreeNode *right){
if(!left && !right) return true;
if(!left || !right || left->val!=right->val) return false;

return isSymmetric(left->left, right->right) &&
isSymmetric(left->right, right->left);
}

二叉树的下一个节点
树的子结构

bool isSubtree(TreeNode* s, TreeNode* t) {
if (!s) return false;
if (isSame(s, t)) return true;
return isSubtree(s->left, t) || isSubtree(s->right, t);
}
bool isSame(TreeNode* s, TreeNode* t) {
if (!s && !t) return true;
if (!s || !t) return false;
if (s->val != t->val) return false;
return isSame(s->left, t->left) && isSame(s->right, t->right);
}

二叉搜索树的后序遍历序列
二叉树中和为某一值的路径
二叉搜索树与双向链表
序列化二叉树
树中两个节点的最低公共祖先

TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if(!root || root==p || root==q) return root;

TreeNode *left = lowestCommonAncestor(root->left, p, q);
if(left && left!=p && left!=q) return left;
TreeNode *right = l
}

二叉树的非递归遍历
前序遍历(leetcode 144)

vector preorderTraversal(TreeNode* root) {
if(!root) return {};

stack s;
vector res;
s.push(root);
while(!s.empty()){
TreeNode *p = s.top();
s.pop();
res.push_back(p->val);
if(p->right) s.push(p->right);
if(p->left) s.push(p->left);
}
return res;
}

中序遍历(leetcode 94)

vector inorderTraversal(TreeNode *root) {
vector res;
stack s;
TreeNode *p = root;

while (p || !s.empty()) {
while (p) {
s.push(p);
p = p->left;
}
p = s.top(); s.pop();
res.push_back(p->val);
p = p->right;
}
return res;
}

后序遍历(leetcode 145)

vector postorderTraversal(TreeNode* root) {
if(!root) return {};
stack s;
vector res;
s.push(root);

while(!s.empty()){
TreeNode *cur = s.top(); s.pop();
if(cur->left) s.push(cur->left);
if(cur->right) s.push(cur->right);
res.insert(res.begin(), cur->val);
}
return res;
}

*衡二叉树(leetcode 110)

bool isBalanced(TreeNode* root) {
int depth = 0;
return isBalanced(root, depth);
}
bool isBalanced(TreeNode *root, int &depth){
if(!root) return true;
int left=0, right=0;
bool leftBalanced = isBalanced(root->left, left);
bool rightBalanced = isBalanced(root->right, right);
depth = max(left, right) + 1;
if(!leftBalanced || !rightBalanced) return false;
if(abs(left-right)>1) return false;
return true;
}

未完待续, 有时间再补充

相关文档

  • 30分钟写一个聊天板
  • 如何找出数组中重复次数最多的数
  • 内向的孩子教育随笔
  • 9.分解质因数
  • Git ? fatal: Unable to create 'XXX/.git/index.lock’: File exists.的解决办法
  • C语言32位和64位编程注意事项
  • 小学教导处教研工作总结
  • 脆皮黄瓜饼好吃又养生的做法
  • java实现rabbitMQ消息收发方式
  • 七年级历史上册卷子中华文化的勃兴
  • 英国杜伦大学硕士预科怎么样
  • 2020年中心学校领导干部情况述职述廉
  • 伤感小说好听句子
  • android BroadcastReceiver 静态注册收不到消息
  • 钓鱼技巧怎么看漂
  • 2017陕西航空职业技术学院招生简章
  • 科学家的故事读书笔记
  • 新建vue项目出现error Unexpected ‘debugger‘ statement no-debugger
  • maven打包deploy指定module
  • 如何设计高中历史第一课?
  • 2019唐山公办大学有哪些公办本科专科院校名单
  • Golang的slice陷阱
  • 《PC端UI框架》Ant Design3
  • 意大利留学资金携带和汇款的主要方式
  • 解除劳动关系的通知书
  • 班长工作总结最新大全
  • 高考文化常识大纲
  • 原神留影机怎么用?
  • 简谈Java String
  • 三年级语文老师的教学随笔
  • 猜你喜欢

  • 中国旅游景点英文介绍精编版
  • 安全生产经费投入计划及实施台帐
  • 【优质文档】县领导在土地利用总体规划修编会议上的讲话-范文模板 (3页)
  • 培训课程表Excel模板
  • 2018-2019年土默特左旗第三中学三年级上册科学期末复习无答案
  • 传动比大于1是加速还是减速
  • 图书馆数字资源建设状况精品资料
  • 广州市嘉新计算机科技有限公司企业信用报告-天眼查
  • 腌制美味酸甜萝卜丝
  • 山东省滨州市2020年中考语文专题复习专题十古代诗歌鉴赏训练
  • 2019年一年级暑假作文100字-暑假草莓园游记
  • 九年级政治全册 第八课 第一框 建设社会主义精神文明*题4
  • 市场营销的本质是什么基本介绍
  • 七年级历史破解彩陶之谜2
  • [实用参考]公司员工晋升淘汰考核制度.doc
  • 关于垃圾分类的日记
  • 英国留学院校 伦敦国王学院课程
  • 广西益通财务咨询有限公司企业信用报告-天眼查
  • 上海适宅网络科技有限公司(企业信用报告)- 天眼查
  • 宫腔镜诊治稽留流产临床分析
  • 五年级语文上册词语类复*题(一)
  • 2019版高中历史 专题4 雅尔塔体制下的冷战与和* 4 紧张对抗中的缓和与对话教师用书 人民版选修3
  • 高中历史人民版必修3八单元第5课《科举制度的利与弊》省级名师优质课教案比赛获奖教案示范课教案公开课教案
  • NSRegularExpression iOS自带的正则表达式
  • 2018年教师实习体会:如何做一名合格的班主任-word范文 (2页)
  • 2019教育人教高中地理 必修一 22 第1课时 全球气压带和风带的分布共41张PPT数学
  • 江西省赣州市石城县2017年中考一模数学试卷(含解析)
  • 船用蒸汽发生器给水控制系统仿真试验平台的设计与实现
  • 男士一周减肥食谱有哪些
  • 游乐园设备名称
  • 装饰花折纸图解
  • 语料库网络资源与大学英语教学信息融合研究
  • 新三好学生申请书
  • 常州市天阳彩色设计制作中心企业信用报告-天眼查
  • 宁夏志星福达养殖专业合作社企业信用报告-天眼查
  • 蟹爪兰如何换盆
  • 【工作总结】烤烟生产办公室20XX年工作总结
  • 基层医院对老年急腹症的临床诊治体会
  • 小学教师资格证考试《教育教学知识与能力》各章节选择题及答案
  • 有限公司签报审批单模板
  • MATLAB批量处理、保存图片
  • 三年级全册体育教案第6周第1节 1、藤圈韵律操(4—6)节:2、游戏:单双脚跳圈
  • 电脑版