创建、前序、中序、后序递归遍历二叉树
代码简介
创建、前序、中序、后序递归遍历二叉树
VS2010编译通过
代码片段
/*关于非线性的数据结构当然树形结构最重要,而树里面又属二叉树最重要,所以在后面将列出二叉树的各种使用方法,包括基本的遍历,和我在一些资料上看到的关于二叉树的面试题型。至于一些很高级的树形结构,如平衡树,还有线索树等,就暂时不写出来,先完成最基本的,再一点点的加*/#include<stdio.h>#include<stdlib.h>//typedefvoid*ElemType;typedefintElemType;structBinaryTreeNode{ElemTypem_nValue;BinaryTreeNode*m_pLeft;BinaryTreeNode*m_pRight;};/*二叉树主要的难点是遍历基本上所有的算法都是基于二叉树的遍历的至于创建二叉树就需要在输入的时候把线性的结构转换成非线性的用输入的方式创建二叉树,*///将输入独立起来,BinaryTreeNode*CreateTree(BinaryTreeNode*bTree){intinput;scanf("%d",&input);//按先序建立二叉树if(input==0){bTree=NULL;//置为NULL后结束returnbTree;}bTree=(BinaryTreeNode*)malloc(sizeof(BinaryTreeNode));bTree->m_nValue=input;bTree->m_pLeft=CreateTree(bTree->m_pLeft);bTree->m_pRight=CreateTree(bTree->m_pRight);returnbTree;}//三种递归遍历方法voidPreorder(BinaryTreeNode*bTree)//这个是先序遍历,先根,左子树,右子树{if(bTree!=NULL){printf("%d",bTree->m_nValue);Preorder(bTree->m_pLeft);Preorder(bTree->m_pRight);}}voidInorder(BinaryTreeNode*bTree)//中序遍历,左子树,根,右子树{if(bTree!=NULL){Inorder(bTree->m_pLeft);printf("%d",bTree->m_nValue);Inorder(bTree->m_pRight);}hxyy2013.b2b168.comhttp://www.wenbing.com/kmhx}voidPostorder(BinaryTreeNode*bTree)//后序遍历,左子树,右子树,根{if(bTree!=NULL){Postorder(bTree->m_pLeft);Postorder(bTree->m_pRight);printf("%d",bTree->m_nValue);}}intmain(){BinaryTreeNode*bTree;bTree=CreateTree(bTree);printf("先序遍历结果为:\n");Preorder(bTree);printf("\n");printf("中序遍历结果为:\n");Inorder(bTree);printf("\n");printf("后序序遍历结果为:\n");Postorder(bTree);printf("\n");return0;system("pause");}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。