二叉树

二叉树

是按值来保存元素,也按值来访问元素。怎么做到呢,和链表一样,二叉树也是由一个个节点组成,不同的是链表用指针将一个个节点串接起来,形成一个链,如果将这个链“拉直”,就像平面中的一条线,是一维的。而二叉树由根节点开始发散,指针分别指向左右两个子节点,像树一样在平面上扩散,是二维的。

五种不同基本形态的二叉树。

  1.为空树;

  2. 为仅有一个结点的二叉树;

  3.是仅有左子树而右子树为空的二叉树;

  4. 是仅有右子树而左子树为空的二叉树;

  5.是左、右子树均非空的二叉树。

这里应特别注意的是,二叉树的左子树和右子树是严格区分并且不能随意颠倒的。

二叉树的遍历:

对于二叉树来讲最主要、最基本的运算是遍历。 
遍历二叉树 是指以一定的次序访问二叉树中的每个结点,对结点进行各种操作。例如,查询结点数据域的内容,或输出它的值,或找出结点位置,或是执行对结点的其他操作。遍历二叉树的过程实质是把二叉树的结点进行线性排列的过程。假设遍历二叉树时访问结点的操作就是输出结点数据域的值,那么遍历的结果得到一个线性序列。 
从二叉树的递归定义可知,一棵非空的二叉树由根结点及左、右子树这三个基本部分组成。因此,在任一给定结点上,可以按某种次序执行三个操作: 
 (1)访问结点本身(N), 
 (2)遍历该结点的左子树(L), 
 (3)遍历该结点的右子树(R)。 

NLR、LNR和LRN分别又称为先根遍历、中根遍历和后根遍历。


以上是对二叉树简单的了解,现在还不能码出代码来,还要更深入的学习啊!作为ACM的小学生,我该多看看大神们的博客,向他们学习,应该会有很大收获;



你可能感兴趣的:(二叉树)