地址

https://www.acwing.com/problem/content/66/

https://www.acwing.com/problem/content/67/

https://www.acwing.com/problem/content/submission/68/

三道题都是二叉树相关 使用递归遍历即可解决

70. 二叉搜索树的第k个结点

给定一棵二叉搜索树,请找出其中的第k小的结点。

你可以假设树和k都存在,并且1≤k≤树的总结点数。

输入

输入:root = [, , , null, null, null, null] ,k = 

   / \

输出:

中序遍历 额外添加了计数K

当遍历了K个节点 就找到了目标节点

 /**
* 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* ans;
TreeNode* travel(TreeNode* root, int& k)
{
if(root == NULL) return NULL; travel(root->left,k);
k--;
if(k ==) ans = root; travel(root->right,k); return NULL;
} TreeNode* kthNode(TreeNode* root, int k) {
travel(root,k); return ans;
}
};

71. 二叉树的深度

输入一棵二叉树的根结点,求该树的深度。

从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。

输入

输入:二叉树[, , , null, null, , , null, null, null, null]如下图所示:

   / \

     / \

输出:

递归遍历 添加层数遍历

 /**
* 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:
int ans =; void travel(TreeNode* root,int k){
if(root == NULL){
if(k > ans)
ans =k;
return;
}
travel(root->right,k+);
travel(root->left,k+); } int treeDepth(TreeNode* root) {
if(root == NULL) return ;
travel(root,); return ans;
}
};

72. 平衡二叉树

输入一棵二叉树的根结点,判断该树是不是平衡二叉树。

如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。

注意:

  • 规定空树也是一棵平衡二叉树。

输入

输入:二叉树[,,,null,null,,,null,null,null,null]如下所示,

   / \

    /  \

输出:true

递归遍历 记录每个节点作为子树的深度 向上返回左右子树大的那个深度

 /**
* 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:
bool ans =true;
int isBalancedInner(TreeNode* root,int k)
{
if(root == NULL) return k; int l = isBalancedInner(root->left,k+);
int r = isBalancedInner(root->right,k+); if(abs(l-r) > ) ans =false; return max(l,r);
} bool isBalanced(TreeNode* root) {
isBalancedInner(root,); return ans;
}
};

最新文章

  1. goim socket丢包粘包问题解决。
  2. flask-admin章节一:使用chartkick画报表
  3. jq 修改input 标签的值
  4. JavaWeb学习笔记——第一个JSP文件
  5. Magicodes.WeiChat——使用AntiXssAttribute阻止XSS(跨站脚本攻击)攻击
  6. DataFrame使用mysql数据
  7. scala vs java 相同点和差异
  8. bzoj 2843 极地旅行社(LCT)
  9. IE JavaScript字符串转换成Date后出现NaN错误
  10. C库专题(Day1)
  11. ASPNET程序中常用的三十三种代码
  12. Git merge local repository
  13. Windows Phone – 裁剪图片 (Crop Image)
  14. USACO 2017 February Gold
  15. Op-level的快速算法
  16. Tomcat架构解析(五)-----Tomcat的类加载机制
  17. 【JMeter】基础元件
  18. webpack 多页面|入口支持和公共组件单独打包--转载
  19. bzoj 3676 后缀自动机+马拉车+树上倍增
  20. 通过HttpWebRequest实现模拟登陆

热门文章

  1. zuul实现的限流
  2. English: Class GXX
  3. 大疆无人机 Android 开发总结——视频解码
  4. SpringBoot中使用Zuul
  5. python捕捉详细异常堆栈的方法
  6. unittest---unittest中verbosity参数设置
  7. 在windows桌面上创建一个文件夹
  8. queue队列基础讲解
  9. 通过修改VAD属性破除锁页机制
  10. JMeter压测“java.net.BindException: Address already in use: connect”解决方法