昏昏暗暗 2022-09-26 19:57 采纳率: 81%
浏览 19
已结题

二叉树递归函数的递归遍历问题?

struct Node
{
    char data;//数据域
    struct Node* LChild;//左子树指针
    struct Node* RChild;//右子树指针
};
struct Node* createNode(char data)  //创建节点:
{
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    
    if (newNode == NULL)
    {
        return NULL;
    }
    else
    {
        newNode->data = data;
        newNode->LChild = NULL;
        newNode->RChild = NULL;
        return newNode;
    }

}
//写一个插入节点
void insertNode(struct Node* parent, struct Node* LChild, struct Node* RChild)

{
    parent->LChild = LChild;
    parent->RChild = RChild;
}
void preorder(struct Node* root) //递归函数
{
    //先序变量 根左右
    if (root != NULL)
    {
        printf("%c", root->data);//数据根部  输出这里是   
        preorder(root->LChild);//直接往左子树边走
        preorder(root->RChild);//直接往右子树边走
    }
}
int main(void)
{
    struct Node* A = createNode('A');
    struct Node* B = createNode('B'); 
    struct Node* C = createNode('C');
    struct Node* D = createNode('D');
    struct Node* E = createNode('E');
    struct Node* F = createNode('F');
    struct Node* G = createNode('G');
    //====将上边的data数据连接起来后下边输出  前序写法
    insertNode(A, B, C); 
    insertNode(B, D, E); 
    insertNode(C, NULL, F);
    insertNode(F, G, NULL);    
    //=============================输出遍历结果
    printf("\n前序遍历");
    preorder(A); //A是树根
    return 0;

前序遍历图:

img


反汇编中:

img


请问反汇编中的递归原理
还有能讲解一下C++中左子树和右子树是怎么递归的步骤吗?最好有视频看麻烦了。

  • 写回答

4条回答 默认 最新

  • CSDN专家-link 2022-09-26 20:14
    关注

    树的递归和文件夹类似,一个文件夹下面,有文件夹和文件,没打开一层,都是一个形式。树也是一样,每个树根下面,都是叶子、左子树和右子树。
    所以,我们只需要考虑计算某个跟节点下面的叶子数据,然后递归调用左子树和右子树即可。因为左右子树本身也是跟节点。最后将三个结果相加,就是某个跟节点的计算结果。
    其实递归想明白了,挺容易的。有时候递归容易忘的是递归的返回值接收,以及先递归左右子树,还是先处理叶子。这就形成了先序、中序和后序遍历,大概是这样子。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 10月6日
  • 已采纳回答 9月28日
  • 创建了问题 9月26日

悬赏问题

  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型
  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题