二叉树的后序遍历(C语言)

本文详细介绍了如何使用C语言实现二叉树的后序遍历,包括递归和迭代两种方法。递归方法遵循先遍历左子树,再遍历右子树,最后访问根节点的顺序。迭代方法则利用栈模拟递归过程,通过改变访问节点的顺序实现前中后序遍历。此外,文章还提供了计算二叉树前中后序遍历顺序的独特思路,并给出了从右孩子开始的前序遍历代码,用于得到后序遍历的反序结果。
摘要由CSDN通过智能技术生成

首先我们从两个方面讲解二叉树的后序遍历(递归+迭代)

一.二叉树的后序遍历.(递归)

思想:

首先我们从二叉树的根节点开始先遍历其左孩子,①接着同样继续遍历其左孩子的左孩子,直到某个左孩子节点的左孩子为NULL时,②开始遍历其右孩子,如果其为NULL则访问该节点的值域,并返回其双亲节点重复第二步的操作,如果其不为NULL则以该节点为根节点重复第一步的操作.直到访问完所有节点时结束递归.

代码:

void BTreePostOrder(struct TreeNode* root,int* arry,int* Size){//后序遍历
    if(NULL==root){//递归出口
        return;
    }
    BTreePostOrder(root->left,arry,Size);//遍历左孩子
    BTreePostOrder(root->right,arry,Size);//遍历右孩子
    arry[(*Size)++]=root->val;//访问该节点
}

运行过程:(如图)

二.二叉树的后序遍历(迭代)

我们应该知道二叉树的前中后序遍历使用递归非常的简单,但是如果用迭代的话就比较有难度了,因此我思考了很久有没有一种迭代类型的算法与递归的框架相似(递归的三种算

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陆陆陆ovo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值