二叉链表的创建

来源:互联网 发布:四级听力知乎 编辑:程序博客网 时间:2024/06/01 09:12
#include<iostream>#include<cstdlib>using namespace std;struct BTNode{int data;BTNode * lchild,* rchild;};const int MaxSize=100;class BinaryTree{public:BinaryTree();~BinaryTree(void);void PreOrder(BTNode * root);void InOrder(BTNode * root);void PostOrder(BTNode * root);BTNode * CreateBtree();void Release(BTNode * root);BTNode * root;};


这个问题,我被纠结了很长时间,主要是输入的问题,下面这个程序采用的是先序顺序输入,用*表示空接点,对叶子节点也如此。

header。cpp

#include"header.h"BinaryTree::BinaryTree(){root=CreateBtree();}BTNode * BinaryTree::CreateBtree(){BTNode * root;char ch;cin>>ch;if(ch=='*')root=NULL;else{root=new BTNode;root->data=ch-'1'+1;root->lchild=CreateBtree();root->rchild=CreateBtree();u}return root;}void BinaryTree::PreOrder(BTNode * root){if(root==NULL) return;else{cout<<root->data<<" ";PreOrder(root->lchild);PreOrder(root->rchild);}}void BinaryTree::InOrder(BTNode * root){if(root==NULL) return;else{InOrder(root->lchild);cout<<root->data<<"  ";InOrder(root->rchild);}}void BinaryTree::PostOrder(BTNode * root){if(root==NULL)return;else{PostOrder(root->lchild);PostOrder(root->rchild);cout<<root->data<<"  ";}}}*/BinaryTree::~BinaryTree(){Release(root);}void BinaryTree::Release(BTNode * root){if(root!=NULL){Release(root->lchild);Release(root->rchild);delete root;}}


main

#include"header.h"int main(){BinaryTree bt;cout<<"其前序遍历为:";bt.PreOrder(bt.root);cout<<endl;cout<<"其中序遍历为:";bt.InOrder(bt.root);cout<<endl;cout<<"其后序遍历为:";bt.PostOrder(bt.root);cout<<endl;cout<<endl;system("pause");return 0;}