首页 > 代码库 > c++ 二叉树的遍历
c++ 二叉树的遍历
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <stdarg.h> #include <time.h> struct node { long data; //存放数据的一个或者多个项 long count; struct node *pLeft; //左孩子 指向一个二叉树 struct node *pRight; //右孩子 指向一个二叉树 }; struct node * CreateNode(long value) { struct node *p=malloc(sizeof(struct node)); p->pLeft=p->pRight=NULL; p->data=http://www.mamicode.com/value; p->count=1; } struct node * AddNode(struct node * pNode,long v) { //情况一 pNode==NULL if (pNode==NULL) { return CreateNode(v); } // pNode->data=http://www.mamicode.com/v if (pNode->data=http://www.mamicode.com/=v) { pNode->count++; return pNode; } //v大于结点数据 if (v>pNode->data) { if (pNode->pRight==NULL) { pNode->pRight=CreateNode(v); return pNode->pRight; }else return AddNode(pNode->pRight,v); //递归调用 } //v小于 结点数据 if (v<pNode->data) { if (pNode->pLeft==NULL) { pNode->pLeft=CreateNode(v); return pNode->pLeft; }else return AddNode(pNode->pLeft,v); //递归调用 } return NULL; } void traversal(struct node* pNode) { int i; if (pNode->pLeft!=NULL) { traversal(pNode->pLeft); } for (i=1;i<=pNode->count;i++) { printf("%d,",pNode->data); } if (pNode->pRight!=NULL) { traversal(pNode->pRight); } } int main(void) { struct node*root; long v,i; printf("请输入二叉树根结点数值:"); scanf("%d",&v); root=CreateNode(v); //根结点 for (i=0;i<=10;i++) { AddNode(root,i); } //遍历 traversal(root); getchar(); getchar(); getchar(); return 0; }
c++ 二叉树的遍历
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。