首页 > 其他分享 >4 二叉树

4 二叉树

时间:2023-01-04 15:11:37浏览次数:58  
标签:结点 遍历 TreeNode val 二叉树 节点

 

 满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。深度为k,有2^k-1个节点的二叉树。

完全二叉树:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2^(h-1)  个节点。

二叉搜索树:一个有序树,若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;其左、右子树也分别为二叉排序树。

平衡二叉搜索树:又被称为AVL(Adelson-Velsky and Landis)树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1(不超过一层),并且左右两个子树都是一棵平衡二叉树。

二叉树可以链式存储,也可以顺序存储。链式存储方式就用指针, 顺序存储的方式就是用数组。

二叉树主要有两种遍历方式

  深度优先遍历:先往深走,遇到叶子节点再往回走。

    前序遍历(递归法,迭代法):根左右(先序)

    中序遍历(递归法,迭代法):左根右

    后序遍历(递归法,迭代法):左右根

  广度优先遍历:一层一层的去遍历。

    层次遍历(迭代法)

链式存储的二叉树节点的定义方式:

public class TreeNode {
    int val;
      TreeNode left;
      TreeNode right;
      TreeNode() {}
      TreeNode(int val) { this.val = val; }
      TreeNode(int val, TreeNode left, TreeNode right) {
            this.val = val;
            this.left = left;
            this.right = right;
      }
}

 参考链接:https://www.programmercarl.com/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html#%E5%85%B6%E4%BB%96%E8%AF%AD%E8%A8%80%E7%89%88%E6%9C%AC

标签:结点,遍历,TreeNode,val,二叉树,节点
From: https://www.cnblogs.com/cjhtxdy/p/17024869.html

相关文章

  • C#遍历二叉树
    最近看了一些关于二叉树的文章,于是学习了一下C#遍历二叉树的几种方式,特记录如下二叉树,是一种数据结构,它是一种非线性的数据结构.这里的非线性是相对于线性数据结构而言......
  • 每日算法之把二叉树打印成多行
    JZ78把二叉树打印成多行题目给定一个节点数为n二叉树,要求从上到下按层打印二叉树的val值,同一层结点从左至右输出,每一层输出一行,将输出的结果存放到一个二维数组中......
  • leetcode-637. 二叉树的层平均值
    637.二叉树的层平均值-力扣(Leetcode)层次遍历+求平均值,Go中的切片也可以模拟queue的功能/***Definitionforabinarytreenode.*typeTreeNodestruct{*......
  • BM33 二叉树的镜像
    题目描述思路分析采用递归的方法,对每一个节点做相同的处理,交换节点位置,也就类似于我们交换两个变量的值一样,需要借助一个临时变量。递归:-传递过来的节点需要做什么......
  • BM32 合并二叉树
    题目描述已知两颗二叉树,将它们合并成一颗二叉树。合并规则是:都存在的结点,就将结点值加起来,否则空的位置就由另一个树的结点来代替。例如:两颗二叉树是:tree1tree2合......
  • BM31 对称的二叉树
    题目描述思路分析使用递归的方法,每次传递镜像的节点进去,compare函数专门用于比对,对不同的条件做不同的处理代码参考constisSymmetrical=function(pRoot){//w......
  • BM29 二叉树中和为某一值的路径(一)
    题目描述思路分析采用递归的方法,左(右)子树的sum=sum-root.val。每次都减去当前的root值,如果左子树或者右子树的节点值等于sum,则说明找到了,返回true,否则当root为空......
  • 力扣110 判断是否是平衡二叉树
    力扣110判断是否是平衡二叉树题目:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对......
  • leetcode-617. 合并二叉树
    617.合并二叉树-力扣(Leetcode)递归合并二叉树easy/***Definitionforabinarytreenode.*typeTreeNodestruct{*Valint*Left*TreeNode*......
  • 力扣107 二叉树的层序遍历
    力扣107二叉树的层序遍历题目:给你二叉树的根节点root,返回其节点值自底向上的层序遍历。(即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)示例1:输入:root......