| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 7.24树题目整理 -> 正文阅读 |
|
[数据结构与算法]7.24树题目整理 |
出处:剑指offer07 题目:输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。 假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] 思路:前序遍历:中左右,中序遍历:左中右。前序遍历的第一个结点就是根结点,通过根结点对中序遍历进行划分得到左子树和右子树,分别递归对其他结点也进行这样的递归得到划分后的二叉树。 注意点:对于前、中、后序遍历的划分如下所示:
?已知中序和后序重建二叉树:
出处:剑指offer026 题目: 输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 思路: 递归三步求解 1.返回值:返回是否是子结构 2.终止条件:如果递归时A(大树)为空返回false,B(子结构)空返回true。 3.单步递归逻辑:当A,B结点中的值相同时,同时判断func(A->left,B)||func(A->right,B) B是否存在与A的左子树或右子树中。
出处:剑指offer27 题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。 ?思路:后序遍历,递归 1.返回:输出镜像树的根节点 2.终止条件:当结点为null时返回null 3.单步逻辑:后序遍历拿到中结点的左右子结点,交换两个结点。
出处: 剑指offer28 题目:判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 思路:二叉树对称要求左子树的左结点等于右子树的右结点,并且左子树的右节点等于右子树的左结点 递归 1.返回值:返回bool 2.终止条件:如果root1&&root2则返回true,如果root1或root2有一个为null或当前结点值不相同返回false 3.单步逻辑:返回func(A->left,B->right)&&func(A->right,B->left)
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/25 17:49:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |