求大牛指导

C++语言 码拜 10年前 (2015-05-11) 1351次浏览 0个评论
#include <iostream>
using namespace std;
#include <stdlib.h>

typedef int Type;

struct BiNode
{
    Type data;
    BiNode *L,*R;
};

void CreatTree(BiNode *ptr)
{/*?èDòê?è?£?μY1éμ÷ó?
    */

    Type data;
    cin>>data;
    if(!data)
        ptr=NULL;
    else
    {
        ptr=new BiNode;
        if(!ptr)
            exit(0);
        (*ptr).data=data;
        CreatTree((*ptr).L);
        CreatTree((*ptr).R);
    }
 //   return ptr;


}

void PrePrint(BiNode *ptr)
{
    if(ptr!=NULL)
    {
        cout<<ptr->data<<"" "";
        PrePrint(ptr->L);
        PrePrint(ptr->R);
    }
}

int main()
{
    BiNode T;
    BiNode *Tptr=&T;
    CreatTree(Tptr);
//    cout<<(*Tptr).data<<endl;
    PrePrint(Tptr);
    return 0;
}
20分
修改如下:

#include <iostream>
using namespace std;
#include <cstdlib>
typedef int Type;
struct BiNode
{
	Type data;
	BiNode *L, *R;
};
BiNode* CreatTree()
{
	Type data;
	BiNode *p;
	cin >> data;
	if (!data)
		p = NULL;
	else
	{
		p = new BiNode;
		if (!p) exit(0);
		p->data = data;
		cout << "请输入 " << data << " 节点的左孩子 ";
		p->L = CreatTree();
		cout << "请输入 " << data << " 节点的右孩子 ";
		p->R = CreatTree();
	}
	return p;
}
void PrePrint(BiNode *ptr)
{
	if (ptr != NULL)
	{
		cout << ptr->data << "" "";  //根
		PrePrint(ptr->L);   //左
		PrePrint(ptr->R);   //右
	}
}
int main()
{
	BiNode *T;
	T = CreatTree();
	PrePrint(T);
	return 0;
}
//1
//请输入 1 节点的左孩子 2
//请输入 2 节点的左孩子 4
//请输入 4 节点的左孩子 0
//请输入 4 节点的右孩子 0
//请输入 2 节点的右孩子 0
//请输入 1 节点的右孩子 3
//请输入 3 节点的左孩子 0
//请输入 3 节点的右孩子 0
//1 2 4 3

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明求大牛指导
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!