谁能给一个中续遍历二叉树的程序?C语言。

来源:百度知道 编辑:UC知道 时间:2024/05/14 18:51:14
二叉树用顺序存储,或者链式存储都行。

/* 树的中续遍历的递归算法*/

#include<stdio.h>

#define MAXNUM 20
#define null -1

/* typedef int DataType; */
struct ParTreeNode {
/*DataType info; 结点中的元素 */
int parent; /* 结点的父结点位置 */
};

struct ParTree {
int n; /* 树中结点的个数 */
struct ParTreeNode nodelist[MAXNUM]; /* 存放树中的结点 */
};

typedef struct ParTree *PParTree; /* 树类型的指针类型 */

int rightSibling_partree(PParTree t, int p) {
int i;
if (p >= 0 && p < t->n) {
for (i = p+1; i <= t->n; i++)
if (t->nodelist[i].parent == t->nodelist[p].parent)
return(i);
}
return null;
}

/* 依先根序列存储时,求最左子结点的运算可简化如下*/
int leftChild_partree(PParTree t, int p) {
if (t->nodelist[p+1].parent == p)
return(p+1);
else
return null;
}

typede