代码随想录算法训练营(二叉树总结篇)

一.二叉树的种类

1.满二叉树:就是说每一个非叶子节点的节点都有两个子节点。

代码随想录算法训练营(二叉树总结篇)_第1张图片

 2.完全二叉树:此二叉树只有最后一层可能没填满,并且存在的叶子节点都集中在左侧!!!

代码随想录算法训练营(二叉树总结篇)_第2张图片代码随想录算法训练营(二叉树总结篇)_第3张图片

 (满二叉树也是完全二叉树)

3.二叉搜索树(BST树):顾名思义,搜索是跟值相关联。

  • 中间节点的左侧子树的所有节点的元素值小于中间节点的值

  • 中间节点的右侧子树的所有节点的元素值大于中间节点的值

 代码随想录算法训练营(二叉树总结篇)_第4张图片代码随想录算法训练营(二叉树总结篇)_第5张图片

 4.平衡二叉搜索树(AVL树):是一种既是平衡二叉树又是二叉搜索树的数据结构。它的每个节点的左子树和右子树的高度差不超过1,并且满足二叉搜索树的性质。

代码随想录算法训练营(二叉树总结篇)_第6张图片代码随想录算法训练营(二叉树总结篇)_第7张图片

 代码随想录算法训练营(二叉树总结篇)_第8张图片代码随想录算法训练营(二叉树总结篇)_第9张图片

 注意:空树是满二叉树、平衡二叉树、二叉搜索树、平衡二叉搜索树的特例。

 二.二叉树的存储方式

1.链式存储

代码随想录算法训练营(二叉树总结篇)_第10张图片

2.数组存储

代码随想录算法训练营(二叉树总结篇)_第11张图片代码随想录算法训练营(二叉树总结篇)_第12张图片

 三.二叉树的遍历方式

1.深度优先遍历

前序遍历(中左右)

中序遍历(左中右)

后序遍历(左右中)

2.广度优先遍历

层序遍历(队列)

四.二叉树的定义

struct TreeNode{
    int val;
    TreeNode*left;
    TreeNode*right;
    TreeNode(){
        val=0;
        left=nullptr;
        right=nullptr;
    }
    TreeNode(int _val){
        val=_val;
        left=nullptr;
        right=nullptr;
    }
}

五.总结

  • 1.涉及二叉树的问题,首先仔细审题,判断遍历顺序
  • 2.其次根据思路写出伪代码
  • 3.根据伪代码进行修改

你可能感兴趣的:(代码随想录算法训练营(19期),算法学习,C++,算法,数据结构)