二叉树链式存储,实现先中后序输出,并求叶子结点数
2014-05-17 17:03
501 查看
#include <stdio.h> #include <stdlib.h> typedef struct BiTNode { int data; struct BiTNode *lchild,*rchild; }BiTNode,*BiTree; int CreateBiTree(BiTree &T) { char ch; scanf("%c",&ch); if(ch==' ') T=NULL; else { if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) return -1; T->data=ch; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } return 1; } int LeafNode(BiTree &T) { int n; if(T==NULL) return 0; else if(T->lchild==NULL&&T->rchild==NULL) return 1; else return (LeafNode(T->lchild)+LeafNode(T->rchild)); } void PreOrderTraverse(BiTree &T) { if(T==NULL) return; printf("%c",T->data); PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } void InOrderTraverse(BiTree &T) { if(T==NULL) return; InOrderTraverse(T->lchild); printf("%c",T->data); InOrderTraverse(T->rchild); } void PostOrderTraverse(BiTree &T) { if(T==NULL) return; PostOrderTraverse(T->lchild); PostOrderTraverse(T->rchild); printf("%c",T->data); } void main() { BiTree T; CreateBiTree(T); PreOrderTraverse(T); printf("\n"); InOrderTraverse(T); printf("\n"); PostOrderTraverse(T); printf("\n"); printf("%d",LeafNode(T)); printf("\n"); }
完美主义者。格式才不放过!这里用的几乎是递归,这东西,有些不熟练,写出来短短几句,里面却一层套着一层,挺好用的,再一个我的输出因为递归经常出现问题
相关文章推荐
- 二叉树链式存储的实现
- Java实现链式存储的二叉树
- 二叉树的链式存储与实现(C++)
- 树和二叉树的链式存储实现
- 二叉树(二叉链式存储)8种基本操作的实现
- 使用java实现链式存储的二叉树
- 二叉树的链式存储结构 C++代码实现
- 二叉树基本操作实现(二叉树的链式存储)
- 数据结构:二叉树的链式存储实现
- 二叉树的链式存储实现
- 二叉树的链式存储实现
- 数据结构之C/C++实现二叉树的链式存储
- 二叉树链式存储的C实现
- 二叉树的链式存储结构 前序 后序 中序 层序遍历操作实现 判断是否完全二叉树
- java实现二叉树的链式存储
- 二叉树链式存储的实现
- 二叉树-链式存储-Java实现(未完待续)
- 二叉树的链式存储实现及遍历
- 线性表的链式存储结构之单链表类的实现之补充_Java
- 简单链式二叉树(C++模版技术实现)