数据结构----二叉树非递归实现

本文介绍了如何非递归地构造二叉树,通过先序遍历的字符序列,利用栈存储节点。同时详细讲解了前序、中序和层次遍历二叉树的算法,以及遍历在计算节点数、求深度和销毁二叉树等场景的应用。在销毁二叉树时,后序遍历提供了简单有效的解决方案。
摘要由CSDN通过智能技术生成

/*********构造二叉树*********/

输入一串以二叉树先序序列遍历的字符,空格表示空指针。

比如这串字符:ABD123CE4F5G678(为方便阅读,以数字代替空格),以先序顺序逆推出的二叉树应是:


从中观察出构造二叉树的算法:

以字符串的遍历为循环条件,构造一个栈来存放左右孩子指针都未被赋值的节点,空指针不允许入栈。

(1)循环开始前,让头节点先入栈

(2)str[i]表示当前字符(i初始值为1),若str[i-1]不是空格,那么str[i]一定是str[i-1]的左孩子;

若是空格,那么str[i]一定不是它的左孩子,即:str[i]一定是str[i-1]的右孩子,当右孩子被连接之后,

表明双亲节点的左右孩子指针均已赋值,那么就可以将这个双亲节点弹出,简化版:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值