Beispiel #1
0
void LDRTree(CBTType *treeNode,void(*TreeNodeData)(CBTType *p))   //中序遍历
{
	if(treeNode)
	{
		LDRTree(treeNode->left,TreeNodeData);
		TreeNodeData(treeNode);
		LDRTree(treeNode->right,TreeNodeData);
	}
}
Beispiel #2
0
void LDRTree(treeNode * pNode)
{
    if (NULL == pNode)
        return;
    else
    {
        LDRTree(pNode->ld);
        show(pNode);
        LDRTree(pNode->rd);
    }
}
Beispiel #3
0
int main(int argc, char ** argv)
{
    treeNode * root = createTree();
    if (!root)
        return -1;
    printf("\n------------------\n");
    LDRTree(root);
    printf("\n------------------\n");
    DLRTree(root);
    printf("\n------------------\n");
    LRDTree(root);

    printf("\n叶子结点个数 %d\n", leafnum(root));
    printf("\n二叉树层高 %d\n", getMaxLevel(root));

    showTree(root);

    return 0;
}
Beispiel #4
0
void main()
{
	CBTType *root=NULL;
	char  menusel;
	void (*TreeNodeData1)(CBTType *p);
	TreeNodeData1=TreeNodeData;

	root = InitTree();
	do{
		printf("请选择菜单添加二叉树的节点\n");
		printf("0.退出\t");
		printf("1.添加二叉树的节点\n");
		menusel = getch();
		switch(menusel)
		{
		case '1':
			AddTreeNode(root);
			break;
		case '0':
			break;
		default:
			;
		}
	}while(menusel != '0');

	do{
		printf("请选择菜单遍历二叉树,输入0表示退出:\n");
		printf("1.先序遍历DLR\t");
		printf("2.中序遍历LDR\n");
		printf("3.后序遍历LRD\t");
		printf("4.按层遍历\n");


		menusel = getch();
		switch(menusel)
		{
		case '0':
			break;
		case '1':
			printf("\n 先序遍历DLR的结果:");
			DLRTree(root,TreeNodeData1);
			printf("\n");
			break;
		case '2':
			printf("\n中序遍历LDR的结果:");
			LDRTree(root,TreeNodeData1);
			printf("\n");
			break;
		case '3':
			printf("\n 后序遍历LRD的结果:");
			LRDTree(root,TreeNodeData1);
			printf("\n");
			break;
		case '4':
			printf("\n 按层遍历的结果:");
			LevelTree(root,TreeNodeData1);
			printf("\n");
			break;
		default:
			;
		}
	
	}while(menusel != '0');

	printf("\n 二叉树深度为:%d \n",TreeDepth(root));

	ClearTree(root);
	root = NULL;


}