| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 二叉树的OJ题 -> 正文阅读 |
|
[数据结构与算法]二叉树的OJ题 |
目录 6.二叉树遍历_牛客题霸_牛客网 (nowcoder.com) (温馨提示:这里的标题本身就是题的链接) 1.?965. 单值二叉树题目:
单值二叉树就是所有节点值相同的二叉树,若要判断所有结点值相同,首先要思路就是判断根结点和左右孩子的值是否相同,如果相同,不能返回true,因为下面的结点还没判断,还要继续判断左孩子是否和他的左右结点值相同,右孩子是否和他自己的左右结点值相同,放 是否相同 就没办法放返回值了,所以这里的if语句不能放是否值相同,应该放 值是否不相同,不相同就返回false。 过程是:先判断根节点是不是空结点,是空结点也算单值,返回true;如果不是空结点,先判断根节点和左孩子值是否相同,不相同返回false,相同继续判断根和右孩子值是否相同:不相同返回false,相同的话继续重复判断左孩子是否和他的左右结点值相同,右孩子是否和他自己的左右结点值相同。一直到传入叶子结点,说明上面的结点都相同了,叶子结点不为空,但是他的左右孩子都是空,就不能访问左右孩子的值,所以要加上判断左右孩子是否为空的条件,为空就是叶子,左右是空就不用比较了,返回true。 2.?100. 相同的树(温馨提示:这里的标题本身就是链接) 题目:
比两颗二叉树是否相同有三种情况:①节点全为空则相同返回true?②节点一空一非空一定不同返回false ③两个节点都是非空,不相同返回false,如果if条件设成相同,成立了也不能返回,还得继续向下比,所以不能设为相同而需要设成不相同返回false才能继续比较,如果相同不返回false,继续比较下面的左右节点即可。 3.?101. 对称二叉树(温馨提示:这里的标题本身就是链接) 题目:
①只有一个空节点时是对称返回true。 当比较到叶子下面的空节点时说明对称,返回true ②利用对称函数判断是否对称,根节点不用比较,所以从左右节点开始 ③_isSymmetric 判断对称函数相当于是把判断二叉树相同函数进行修改;把根节点的左右子树看成两个树传入此函数,判断两个树是否相同时我们拿树1和树2的相同位置节点相比较: 【 return _isSymmetric(p->left, q->left)&&_isSymmetric(p->right, q->right); 】 【 return _isSymmetric(p->left, q->right)&&_isSymmetric(p->right, q->left); 】 4.?144. 二叉树的前序遍历(温馨提示:这里的标题本身就是链接) 题目:
思路:需要返回一个数组a,只需要利用二叉树前序遍历函数preorder ,把打印这个值改成每次把这个值给数组a最后返回a就可以了(注意:为了让a能每次下标走下去,需要传i的地址进去才可以)并且用malloc给a开辟空间时,还需要知道a数组的大小,所以再利用一个计算二叉树节点个数的函数 BTreeSize (此函数详细讲解请见(155条消息) “二叉树遍历“详解 以及 二叉树的实现_beyond.myself的博客-CSDN博客?中二.1.⑤) 5.????????572. 另一棵树的子树(温馨提示:这里的标题本身就是链接) 题目:
?当走到root节点为空时,肯定不包含subRoot,返回false;如果不为空就利用 判断两棵树是否相同函数 从已到的节点开始判断下面部分是否相同,相同就是包含subRoot,就返回true,不包含不能直接返回false,还得继续向下比较,所以说这里只要?isSameTree(root,subRoot) 成立一次就可以返回true,不成立继续向下找,只要包含成立一次就是返回true(所以用逻辑运算符 或|| ),不包含继续向下找,直到找到空节点就返回false。还可以写成下面的形式:
6.二叉树遍历_牛客题霸_牛客网 (nowcoder.com)(温馨提示:这里的标题本身就是链接) 题目: ?先把输入数据放入数组a,利用 CreatTree 函数,每创建一个节点,就把数组a中的数据放入,按前序遍历依次放入二叉树,边创建节点边放值,如果数组a中数据是‘#’就是空节点,返回NULL,会把NULL赋给这个节点同时也就结束递归,最后返回根节点tree到主函数中,再进行中序遍历打印即可
? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 7:24:04- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |