树
文章平均质量分 56
nepu_bin
前方的路没有答案,只有走着走着才有了答案
展开
-
LeetCode 98. 验证二叉搜索树
Problem: 验证二叉搜索树 题目描述: 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 LeetCode原题传送 Solution 对于二叉搜索树BST,在中序遍历的时候会得到单调递增的序列,注意这里是严格意义上的单调递增(不存在相等的情况),按照这一特点笔者想到的最直接的方法是:中序遍历收集节点的值,再遍历数组判断是否是单调递增即可。 中序原创 2021-08-15 20:53:21 · 120 阅读 · 1 评论 -
LeetCode110-平衡二叉树
平衡二叉树 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 原题传送 求解平衡树我们需要知道的是:二叉平衡树的每个节点树的左右子树高度差不超过1,那么我们需要考虑的事情自然有两件:1、每棵树的左右节点高度求解,2、树中每个节点树是否满足平衡条件; 求解高度差我们可以简单写一个递归函数: 求某一节点的深度可以转化为该节点子树的最大深度加上节点本身的深度1,递归退出条件为节点为空,返回值是节点子树的最大深.原创 2021-01-29 11:09:46 · 123 阅读 · 0 评论 -
力扣101. 对称二叉树 给定一个二叉树,检查它是否是镜像对称的。
对称二叉树 给定一个二叉树,检查它是否是镜像对称的。 力扣原题传送门OvO 迭代实现 使用队列进行暂存数据,实行广度搜索; 二叉树镜像对称的条件是: 1.当前比较的两个节点值相同; 2.左节点的左孩子应与右节点的右孩子相等,左节点的右孩子应与右节点的左孩子相等; 据此我们使用队列,每次存放的是一对一对我们需要比较的对象,在存入之前先要判断,若当前节点都为空,则无需后序比较,本次循环结束(直接进入下一次循环条件判断),若存在一个节点缺失或者两节点值不相等,那么该树就已经不对称了,可以返回fals..原创 2021-01-28 15:01:33 · 314 阅读 · 0 评论 -
剑指 Offer 32 - I. 从上到下打印二叉树
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 力扣原题传送===> OvO 根据题意,我们使用广度优先搜索,借助队列先进先出的特点完成层次遍历; 代码如下: struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; class Solution原创 2021-01-26 22:58:15 · 138 阅读 · 0 评论 -
二叉搜索树(BST)创建以及层次、先、中、后序遍历
二叉树先、中、后序遍历(递归&&非递归) 文章目录前言一、递归二、非递归总结 前言 提起二叉树,刚刚结束的大二上学期那可真把我折磨死了,当时连c都没摸清楚的我,至今还记得实验课上老师要求我们写出二叉树的先中后序遍历时我尴尬的表情QAQ,那时真是的太难了,连一个for循环都要反复去理解才看得懂。趁寒假比较闲,笔者又去学了一遍二叉树,顺便写个博客,记录一下自我的提升。那么,我们开始吧~~ 结构体定义: struct TreeNode { int val; TreeN原创 2021-01-26 16:24:16 · 785 阅读 · 0 评论 -
二叉搜索树BST(Binary Search Tree)的创建
以下是鄙人创建此树的全部过程 生成结构体 树节点中包含1个数值域,两个指针域,分别指向左右孩子。 结构示意: 定义如下: struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode() :val(0), left(nullptr), right(nullptr) {} TreeNode(int x) :val(x), left(nullptr), right(nullptr) {} TreeNode(int x,原创 2021-01-26 11:51:59 · 679 阅读 · 0 评论