递归构造二叉树和二叉树的遍历
学习递归构造二叉树,并且进行前序遍历。 前序遍历,中序遍历和后序遍历是什么? 遍历的顺序分别如下: 前序遍历: 根节点 ,左子树,右子树; 中序遍历:左子树, 根节点 ,右子树; 后序遍历:左子树,右子树, 根节点 。 明眼人可能看出来了:这里的前中后指的是 根节点的位置 。 前序遍历是根节点在前,中序遍历指根节点在中间遍历,中序遍历又叫做“投影遍历”,顺序基本上没变。 递归生成树的代码: //定义 结点结构体 struct tnode { T data ; tnode < T > * left ; tnode < T > * right ; tnode < T > * parent ; } ; //递归生成树的函数 //返回指向根节点的指针 double alpha ; //根节点的比例 template < typename iterator > //迭代器类型 iterator tree_generation ( iterator start , size_t n ) { if ( n < 1 ) return NULL ; size_t c = ( n - 1 ) * alpha ; //根相对位置 iterator root = start + c ; //根节点的位置 iterator left_subtree = tree_generation ( start , c