c++按照层次遍历顺序存放在数组的二叉树转换为按照二叉链表存储的二叉树

本文介绍了一种使用递归方法将层次遍历的二叉树数组表示转换为二叉链表表示的方法,并提供了完整的C++实现代码。通过具体实例展示了如何创建二叉树并进行中序遍历。

原文:点击这里

用递归方法将一个按照层次遍历顺序存放在数组的二叉树转换为按照二叉链表存储的二叉树。

在这里插入图片描述

#include<iostream>
#include<cstring>
char BT[] = "ABCD#EF";
int n = strlen(BT);
using namespace std;
typedef struct TNode{
    char data;
    TNode *lchild, *rchild;
    TNode(char d):data(d),lchild(NULL),rchild(NULL){}//构造函数
    ~TNode(){delete lchild;delete rchild;}
};
TNode * Ttransform(TNode*root,int k) {
	if(k>n||BT[k-1]=='#'){
		return NULL;
	}
	else{
		root=new TNode(BT[k-1]);
		root->lchild=Ttransform(root->lchild,2*k);
		root->rchild=Ttransform(root->rchild,2*k+1);
	}
	return root;
}
void inorder(TNode*root) {
	if(root!=NULL){
		inorder(root->lchild);
		cout<<root->data<<" ";
		inorder(root->rchild);
	}
}
int main(){
	TNode *root=new TNode('a');
	root=Ttransform(root,1);
	inorder(root);
	return 0;	
}

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值