二叉树遍历:求大神给完善一下 10
#include<stdio.h>//typedefcharELEMENT_TYPE;typedefstructnode{chardata;structnode*left...
#include<stdio.h>//typedef char ELEMENT_TYPE;
typedef struct node
{
char data;
struct node *left;
struct node *right;
}BiTreeNode,*BiTree;
char a[] =
{
'\0', 'a', 'b', 'c', '\0', '\0', 'd', 'e', 'f', '\0', '\0', 'g', 'h'
};
BiTree buildBiTree(char a[],int i){
BiTree temp;
if(a[i]=='\0') return NULL;
else
{
temp=new BiTreeNode;
temp->data=a[i];
temp->left=buildBiTree(2*i);
temp->right=buildBiTree(2*i+1);
}
return temp;
}
void rootLeftRight(BiTree root)
{
if(root==NULL)
return;
printf("%d",root->data);
rootLeftRight(root->left);
rootLeftRight(root->right);
}
void rootRightLeft(BiTree root)
{
if(root==NULL)
return;
printf("%d",root->data);
rootRightLeft(root->right);
rootRightLeft(root->left);
}
void leftRightRoot(BiTree root)
{
if(root==NULL)
return;
leftRightRoot(root->left);
leftRightRoot(root->right);
printf("%d",root->data);
}
void rightLeftRoot(BiTree root)
{
if(root==NULL)
return;
rightLeftRoot(root->right);
rightLeftRoot(root->left);
printf("%d",root->data);
}
void deleteBiTree(BiTree root){
if(root==NULL)
return;
}
/*BiTree root=buildBiTree(1);
void preOrderTraverse(BiTree root)
{
if(root==NULL) return;
printf(" ", );
preOrderTraverse(root->left);
preOrderTraverse(root->right);
}
void postOrderTraverse(BiTree root)
{
if(root==NULL)
return;
printf(" ", );
postOrderTraverse(root->left);
postOrderTraverse(root->right);
}
deleteBiTree(Tree,&p,root);
{
if(Tree)
{
p->root;
delete p;
}
}*/
void main(){
BiTree root;
// 从数组a的下标1开始创建二叉树
root = buildBiTree(a, 1);
// 按照根、左子树、右子树的顺序访问二叉树
rootLeftRight(root);
// 按照根、右子树、左子树的顺序访问二叉树
rootRightLeft(root);
// 按照左子树、右子树、根的顺序访问二叉树
leftRightRoot(root);
// 按照右子树、左子树、根的顺序访问二叉树
rightLeftRoot(root);
// 递归删除二叉树节点
deleteBiTree(root);
}
输出时有一个错误: 展开
typedef struct node
{
char data;
struct node *left;
struct node *right;
}BiTreeNode,*BiTree;
char a[] =
{
'\0', 'a', 'b', 'c', '\0', '\0', 'd', 'e', 'f', '\0', '\0', 'g', 'h'
};
BiTree buildBiTree(char a[],int i){
BiTree temp;
if(a[i]=='\0') return NULL;
else
{
temp=new BiTreeNode;
temp->data=a[i];
temp->left=buildBiTree(2*i);
temp->right=buildBiTree(2*i+1);
}
return temp;
}
void rootLeftRight(BiTree root)
{
if(root==NULL)
return;
printf("%d",root->data);
rootLeftRight(root->left);
rootLeftRight(root->right);
}
void rootRightLeft(BiTree root)
{
if(root==NULL)
return;
printf("%d",root->data);
rootRightLeft(root->right);
rootRightLeft(root->left);
}
void leftRightRoot(BiTree root)
{
if(root==NULL)
return;
leftRightRoot(root->left);
leftRightRoot(root->right);
printf("%d",root->data);
}
void rightLeftRoot(BiTree root)
{
if(root==NULL)
return;
rightLeftRoot(root->right);
rightLeftRoot(root->left);
printf("%d",root->data);
}
void deleteBiTree(BiTree root){
if(root==NULL)
return;
}
/*BiTree root=buildBiTree(1);
void preOrderTraverse(BiTree root)
{
if(root==NULL) return;
printf(" ", );
preOrderTraverse(root->left);
preOrderTraverse(root->right);
}
void postOrderTraverse(BiTree root)
{
if(root==NULL)
return;
printf(" ", );
postOrderTraverse(root->left);
postOrderTraverse(root->right);
}
deleteBiTree(Tree,&p,root);
{
if(Tree)
{
p->root;
delete p;
}
}*/
void main(){
BiTree root;
// 从数组a的下标1开始创建二叉树
root = buildBiTree(a, 1);
// 按照根、左子树、右子树的顺序访问二叉树
rootLeftRight(root);
// 按照根、右子树、左子树的顺序访问二叉树
rootRightLeft(root);
// 按照左子树、右子树、根的顺序访问二叉树
leftRightRoot(root);
// 按照右子树、左子树、根的顺序访问二叉树
rightLeftRoot(root);
// 递归删除二叉树节点
deleteBiTree(root);
}
输出时有一个错误: 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询