当前位置: 首页 > news >正文

链式二叉树oj题

1.输入k ,找第k层节点个数

int TreeKlevel(BTNode*root,int k) {if (root == NULL) {return 0;}if (k == 1) {return 1;}return TreeKlevel(root->left, k - 1)+TreeKlevel(root->right, k - 1);
}

在这里我们要确定递归子问题,第一个就是NULL时返回,还有一个就是k=1时就是我们要找的层数。

2.输入一个数,查找该数,找到了返回其地址。

BTNode* TreeFind(BTNode* root, int x) {if (root == NULL) {return NULL;}if (root->val == x) {return root;}BTNode* ret1 = TreeFind(root->left, x);if (ret1)return ret1;BTNode* ret2 = TreeFind(root->right, x);if (ret2)return ret2;return NULL;
}

在这里我们需要弄明白的是,在某个开辟的栈帧中找到了该数据,直接返回其指针,是得不到它的地址的。

3.判断两棵树是相同的

bool isSametree(BTNode* root1, BTNode* root2) {//都为空if (root1 == NULL && root2 == NULL) {return true;}//其中一个为空if (root1 == NULL || root2 == NULL) {return false;}if (root1->val != root2->val) {//判断值是否相同return false;}return isSametree(root1->left, root2->left) &&isSametree(root1->right, root2->right);
}

4.判断是否为镜像/对称二叉树,也就是左右子树是否相同

bool _isSymmetric(BTNode* root1, BTNode* root2) {//根比较//左子树和右子树比较//右子树和左子树比较//都为空if (root1 == NULL && root2 == NULL) {return true;}//一个为空一个不为空if (root1 == NULL || root2 == NULL) {//短路求值return false;}if (root1->val != root2->val) {return false;}return _isSymmetric(root1->left, root2->right) &&_isSymmetric(root1->right, root2->left);
}
bool isSymmetri(BTNode* root) {return _isSymmetric(root->left, root->right);//将根的两个子树传递给子函数
}

5.在一棵树上找另一棵树

bool issubTree(BTNode* root, BTNode* subroot) {if (root == NULL)return false;if (root->val == subroot->val&& isSametree(root, subroot)) {//当遍历时发现根相同时才开始遍历比较//为了防止不止一处地方根相同且有一处根相同的地方并不完全相等,所以我们需要这两个条件同时成立才返回true.return true;}//遍历return issubTree(root->left,subroot) || issubTree(root->right,subroot);
}

这里与其他函数结合可以更好地解决问题。

谢谢
http://www.lryc.cn/news/393930.html

相关文章:

  • Curator 是一个开源工具为 Elasticsearch 集群设计,用于自动化索引的维护任务。
  • STM32-PWR和WDG看门狗
  • C++循环队列 经典示例
  • 【程序大侠传】大表分库分表切换数据库类型导致pagehelper生成sql语法报错
  • 7、Redis 队列与 Stream
  • FFT剖析
  • git clone报错RPC failed; curl 92 HTTP/2 stream 7 was not closed cleanly
  • Apispec,一个用于生成 OpenAPI(Swagger)规范的 Python 库
  • SpringBoot 自定义异常返回数据格式
  • 【xinference】(15):在compshare上,使用docker-compose运行xinference和chatgpt-web项目,配置成功!!!
  • 【Unity 3D角色移动】
  • 个人视角,社会影响力:自媒体的魅力所在
  • 算法训练营day70
  • EtherCAT转Profinet网关配置说明第二讲:上位机软件配置
  • 日志自动分析-Web---360星图GoaccessALBAnolog
  • 【面试八股文】java基础知识
  • ssrf结合redis未授权getshell
  • 魔法自如:精通 IPython %automagic 命令的切换艺术
  • 基于CentOS Stream 9平台搭建MinIO以及开机自启
  • shell-awk语法整理
  • 关于忠诚:忠于自己的良知、理想、信念
  • 探索Linux:开源世界的无限可能
  • 深度学习之半监督学习:一文梳理目标检测中的半监督学习策略
  • Hive 高可用分布式部署详细步骤
  • ubuntu下运行程序时提示缺库问题的有效解决方法
  • GNU/Linux - wic文件的使用
  • 前端JS 插件实现下载【js-tool-big-box,下载大文件(fetch请求 + 下载功能版)
  • JVM专题之垃圾收集器
  • SSM养老院管理系统-计算机毕业设计源码02221
  • 使用Keil将STM32部分程序放在RAM中运行