二叉树
二叉树一定有一个根节点,且每个节点最多有两个子树,称为“左子树”与“右子树”(左子树与右子树是有一定顺序的,不能颠倒)
二叉树的组成
1.二叉树的宽度:即为节点的分支数,分支有多少,度就为几
2.二叉树的深度:组成该树最大的节点层次
二叉树的分类
1.空二叉树-a
2.只有一个根节点的二叉树-b
3.只有左子树-c
4.只有右子树-d
5.完全二叉树-e
一些重要定义
1.完全二叉树:若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。
2.满二叉树:一棵深度为k,且有2^k-1个节点的树是满二叉树。
二叉树的遍历
遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个结点转换成为一个线性序列来表示。
1.前序遍历:先访问根结点,再左子树,最后右子树
/**
Definition for a binary tree node.
struct TreeNode{
int val;
struct TreeNode *left;
struct TreeNode *right;
};
/
2.中序遍历:先访问左子树,再根结点,最后右子树
/**
Definition f