二叉树的相关递归算法

以下是二叉树的先序、中序和后序、以及求数的深度的递归算法。

#include<iostream> using namespace std; typedef struct BiNode { char data; struct BiNode *lchild,*rchild; }BiTNode,*BiTree; void createTree(BiTree &T) { char d; cin>>d; if(d=='/') T=NULL; else { BiTNode *node=new BiTNode(); node->data=d; T=node; createTree(T->lchild); createTree(T->rchild); } } void PreOrderTraverse(BiTree &T) { if(T) { cout<<T->data; PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } } void InOrderTraverse(BiTree &T) { if(T) { InOrderTraverse(T->lchild); cout<<T->data; InOrderTraverse(T->rchild); } } void LastOrderTraverse(BiTree &T) { if(T) { LastOrderTraverse(T->lchild); LastOrderTraverse(T->rchild); cout<<T->data; } } int deep(BiTree &T) { int size1=0; int size2=0; if(T==NULL) return 0; else { size1=deep(T->lchild); size2=deep(T->rchild); if(size1>size2) return size1+1; else return size2+1; } } int main() { BiTree T; cout<<"请输入节点,用以创建二叉树:"<<endl; createTree(T); cout<<"先序遍历的结果为:/n"; PreOrderTraverse(T); cout<<"中序遍历的结果为:/n"; InOrderTraverse(T); cout<<"后序遍历的结果为:/n"; LastOrderTraverse(T); cout<<"树的深度为:/n"; cout<<deep(T)<<endl; system("pause"); return 1; }

在DEV C++上,此段代码运行成功。

你可能感兴趣的:(c,算法,struct,null,System)