求二叉树指定结点到根的路径c语言,求二叉树上结点的路径~请高人指点一下关于这个问题...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

二叉树链表类,没有写主函数

#include "stdlib.h"

#include "stdio.h"

#include "iostream"

using namespace std;

template 

struct BTnode

{

T d;

struct BTnode *left; //左指针域

struct BTnode *right;//右指针域

};

template 

class Binary_Tree

{

public:

Binary_Tree(){ head = NULL; } //构造函数,初始化二叉树链表为空

void create_Binary_Tree(); //建立二叉树链表

void pre_trav_Binary_Tree(); //前序遍历

void in_trav_Binary_Tree(); //中序遍历

void pos_trav_Binary_Tree(); //后序遍历

private:

struct BTnode *head; //头指针

};

template 

void Binary_Tree::create_Binary_Tree(T end)

{

T x;

cin >> x; //输入第一个结点值

if(x == end) return; //第一个结点值为结束符号

p = new struct BTnode; //申请空间存储二叉树结点

p->d = x;p->left = NULL; p->right = NULL;

head = p; //二叉树根结点

create(p,1,end); //输入左结点值

create(p,2,end); //输入右结点值

}

template 

static create(struct BTnode *p,int k,T end)

{

BTnode  *p; //二叉数结点

T x;

if(x != end)

{

q = new BTnode; //申请新结点

q->d = x; q->right = NULL; q->left = NULL;

if(k == 1) p->left = q; //连接到左子树

if(k == 2) p->right = q;//连接到右子树

create(q,1,end); //输入左子树结点值

create(q,2,end); //输入右子树结点值

}

return 0;

}

//前序遍历

template 

void Binary_Tree::pre_trav_Binary_Tree()

{

BTnode *p;

p = head;

pre_trav(p);

cout <

return;

}

template 

static pre_trav(BTnode *p)

{

if(p != NULL)

{

cout <d <

pre_trav(p->left); //遍历左子树

pre_trav(p->right); //遍历右子树

}

return 0;

}

//中序遍历

template 

void Binary_Tree::in_trav_Binary_Tree()

{

BTnode *p;

p = head;

in_trav(p);

cout <

return;

}

template 

static in_trav(BTnode *p)

{

if(p != NULL)

{

in_trav(p->left);

cout <d <

in_trav(p->right);

}

return 0;

}

//后序遍历

template 

void Binary_Tree::pos_trav_Binary_Tree()

{

BTnode *p;

p = head;

pos_trav(p);

cout <

return;

}

template 

static pos_trav(BTnode *p)

{

if(p != NULL)

{

pos_trav(p->left);

cout <d <

pos_trav(p->right);

}

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值