c语言基本概念答题.doc

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二叉树 二叉树的定义 typedef char ElementType; typedef struct BiTreeNode { ElementType data; struct BiTreeNode* lchild; struct BiTreeNode* rchild; }BiTreeNode, *BiTree; 2、 二叉树的建立和销毁 (1)利用先序序列递归建立二叉树 //递归的建立一棵二叉树 //输入为二叉树的先序序列 void createBiTree(BiTree T) { char data; data = getchar(); if(data == #) { T = NULL; } else { T = new BiTreeNode; T-data = data; createBiTree(T-lchild); createBiTree(T-rchild); } } (2)利用广义表建立二叉树 //通过广义表建立二叉树 void createBiTreeWithGenList(BiTree T) { stackBiTree s;//存放待输入孩子的结点 BiTree p = NULL;//用于生成新的结点 int k = 0;//记录期待的结点, k==1表示期待左孩子结点,k==2期待右孩子结点 char ch = getchar(); //处理根结点 if(ch!=#) { p = new BiTreeNode; p-data = ch; p-lchild = NULL; p-rchild = NULL; T = p;//根结点 } while((ch=getchar())!=#) { switch(ch) { case (: s.push(p);//上一个生成的结点,即p入栈,p有孩子 k = 1; //下一个插入的应为左孩子结点 break; case ,: k = 2; //下一个插入的应为右孩子结点 break; case ): s.pop();//结点完成孩子的输入,出栈 break; default: p = new BiTreeNode; p-data = ch; p-lchild = NULL; p-rchild = NULL; if(k==1) s.top()-lchild = p; else s.top()-rchild = p; } } } (3)输出二叉树的广义表表示 //以广义表的方式输出二叉树 void printBiTreeWithGenList(const BiTreeT) { if(T) { coutT-data; if(T-lchild ||T-rchild)//左右子树不全空 { cout(; printBiTreeWithGenList(T-lchild);//递归输出左子树 ,可能为空 if(T-rchild) { cout,; printBiTreeWithGenList(T-rchild); } cout); } } } (4)二叉树的销毁 //递归销毁一棵二叉树 void destroyBiTree(BiTree T) { if(T) { destroyBiTree(T-lchild); destroyBiTree(T-rchild); delete T; T = NULL; } } 3 、二叉树的递归遍历 先序递归遍历 //递归先序遍历二叉树 void preOrderTraverse(const BiTree T) { if(T) { coutT-data ;//输出根节点值 preOrderTraverse(T-lchild);//遍历左子树 preOrderTraverse(T-rchild);//遍历右子树 } } 中序递归遍历 //递归中序遍历二叉树 void inOrderTraverse(const BiTree T) { if(T) { inOrderTraverse(T-lchild);//遍历左子树 coutT-data ;//输出根节点值 inOrderTraverse(T-rchild);//遍历右子树 } } 后序递归遍历 //递归后序遍历二叉树 void postOrderTraverse(cons

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档