二叉树作为基础数据结构,其构建与遍历可以说是一名程序员的基本功,更是一名ACMer的应烂熟于心的知识。
其中建立二叉树的方法主要有用链表建立和用数组建立,本篇文章我们先来介绍链表法建立二叉树。
相对于用数组建立二叉树来说,用链表建立二叉树具有节省空间,简介明了、直观的特点,因此在大部分情况下推荐使用链表法建树。但如果查询树上的一个节点,数组法就比较简介,两种方法各有千秋,文无定法,适者为尊。
对于遍历来说,树的遍历基本有三种,为先序遍历(根左右),中序遍历(左根右),后序遍历(左右根)。当我们建好树后,以上三种遍历都可以用递归方法实现,实现较为简单,非编程初学者看代码即可领悟,这里不在赘述。
我们以一道题为例,来讲解二叉树的构建与遍历。
【问题描述】
根据输入提示,构建二叉树。本题目中,对所有节点进行编号
【输入形式】
第一行整数m,表示二叉树中共有m个非空节点
第二行m个整数,表示编号节点对应的value值,编号从1到m
后面一共m行,表示编号节点的左右子节点编号,0表示对应位置的子节点不存在
【输出形式】
<