![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树
智慧的人不要秃头
放弃不难,但坚持一定很酷!!!
展开
-
力扣513. 找树左下角的值
给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。方法一:迭代法class Solution {public: int findBottomLeftValue(TreeNode* root) { //思路:使用队列进行层次遍历,首先先将第一层(根节点)放入队列中 //然后将第二层、第三层等依次放入到队列中 //我们遍历到第几层,队列中存放的就是第几层的节点...原创 2022-02-12 15:49:27 · 7655 阅读 · 0 评论 -
力扣100. 相同的树
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。class Solution {public: bool isSameTree(TreeNode* p, TreeNode* q) { //如果当前递归的两个节点都为空,返回true if(p == nullptr && q == nullptr){ return true;原创 2022-01-23 19:32:00 · 78 阅读 · 0 评论 -
C++二叉树理论基础
目录二叉树性质二叉树种类满二叉树完全二叉树二叉搜索树平衡二叉搜索树二叉树存储方式二叉树的遍历方式二叉树的定义二叉树性质二叉树种类满二叉树如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。完全二叉树在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~2^h -1 个节点。...原创 2022-01-23 18:52:51 · 1106 阅读 · 0 评论 -
力扣257. 二叉树的所有路径
给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。class Solution {public: //能进入countPath中,说明该节点不为nullptr void countPath(TreeNode* cur, vector<int>& path, vector<string>& result){ //把当前遍历到的二叉树节点的值放入到pat原创 2022-01-23 14:50:27 · 261 阅读 · 0 评论 -
力扣222. 完全二叉树的节点个数
给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/count-complete-tree-nodes著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。方法一.原创 2022-01-21 22:48:53 · 79 阅读 · 0 评论 -
力扣110. 平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1 。方法一:自上而下的递归/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), le...原创 2022-01-12 18:39:35 · 85 阅读 · 0 评论 -
力扣226. 翻转二叉树
翻转一棵二叉树方法一:使用栈class Solution {public: TreeNode* invertTree(TreeNode* root) { if(root==nullptr){ return root; } stack<TreeNode*> stk; //创建一个存放二叉树节点的栈 stk.push(root); //把根节点放入栈中原创 2022-01-07 22:20:13 · 2138 阅读 · 0 评论 -
二叉树全家福 -- 构建二叉树、递归与非递归(先序中序后序)遍历、层次遍历以及层次遍历逐层实现、各节点数加一、查找节点、插入节点、翻转二叉树等
BTree.h文件:#pragma once#include<iostream>#include<vector>using namespace std;//定义二叉树每个节点的结构体struct TreeNode{ int val; TreeNode* left; TreeNode* right; TreeNode(int x) :val(x), left(NULL), right(NULL){}//初始化列表};class Tree {privat.原创 2021-12-31 15:15:49 · 661 阅读 · 0 评论 -
力扣111. 二叉树的最小深度
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。 //本题有一个大大的坑,就是当根节点只有左孩子,没有右孩子的情况,我们就返回左子树的最小深度(或者只有右孩子,没有左孩子,我们就返回右子树的最小深度) //因为最小深度是根节点到叶子节点,深度最小的情况,而叶子节点是指没有左右孩子的节点,如果测试用来如如上图中所示情况,它的最小深度为3,为什么不是呢,因为根节点有右孩子,不属于叶子节点class Sol.原创 2022-01-04 18:53:42 · 332 阅读 · 0 评论 -
力扣104. 二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7]class Solution {public: int getDepth(TreeNode* root){ if(root==nullptr){ return 0; } //求出左子树的深度 in原创 2022-01-04 18:22:59 · 1084 阅读 · 0 评论 -
力扣101. 对称二叉树
给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:递归class Solution {public: bool compare(TreeNode* left,TreeNode* right){ //两节点均为空,返回true if(left == nullptr && right == nul..原创 2022-01-03 21:47:07 · 1100 阅读 · 0 评论