树的创建和按层遍历

以下是有关树的创建和按层遍历的代码,其中按层遍历使用栈进行辅助
#include<stdio.h>
#include<stdlib.h>
#include<stack>
#include<iostream>
using namespace std;  
struct BinaryTree
{
int value;
BinaryTree *lefttree;
BinaryTree *righttree;
};


//树的创建
 void createTree(BinaryTree* &root,int value)
 {
if(root==NULL)
{
root=new BinaryTree();
root->value=value;
root->lefttree=NULL;
root->righttree=NULL;
cout<<value<<endl;
return;
}
if(root->value<=value)
createTree(root->lefttree,value);
else
   createTree(root->righttree,value);
 }
//树按层遍历
void printTree(BinaryTree *root)
{
if(root==NULL)
return;
stack< BinaryTree*> st;
BinaryTree* binary;
st.push(root);
int n=st.size();
while(n>0)
{
   binary=st.top();
cout<<binary->value<<" ";
        st.pop();
if(binary->lefttree!=NULL)
st.push(binary->lefttree);
if(binary->righttree!=NULL)
st.push(binary->righttree);
n=st.size();
}

cout<<endl;
}
int main (int argc,char**argv)
{
int a[]={3,2,1,5,4,9};
BinaryTree* root=NULL;
for(int i=0;i<6;i++)
      createTree(root,a[i]);
cout<<"build over"<<endl;
printTree(root);
return 0;
}

你可能感兴趣的:(树的创建和按层遍历)