二叉树-创建、重建、转化

这篇博客探讨了二叉树的创建和转化方法,包括最简单的创建方式、通过前序和中序序列重建、后序和中序序列重建、有序数组转平衡二叉树以及有序链表转平衡二叉树。文章详细解析了每种方法的思路,并提供了相关代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

篇一:二叉树-遍历终极版
篇二:二叉树-创建、重建、转化
篇三:二叉树-详解二叉排序树
篇四:二叉树-详解平衡二叉树AVL
篇五:二叉树-常见简单算法题

对于二叉树的创建,一般我们只熟悉最简单的二叉树创建方式,即逐个输入节点,然后按照先序遍历或者中序、后序遍历方式来递归建立二叉树。但是,光掌握这个是不够的,我们还得掌握二叉树的重建(先序中序重建二叉树,后序中序重建二叉树),数组转换为二叉树,链表转换为二叉树等等。

1、最简单的创建方式

我们可以根据先序遍历递归创建二叉树,当然也可以中序或者后序遍历方式创建二叉树。

//创建二叉树
BTress CreateTree(BTress &T)
{
    char a;
    cin>>a;
    if(a=='0')
        T=NULL;
    else
    {
        T=new BNode();
        T->data=a;
        CreateTree(T->LChild);
        CreateTree(T->RChild);
    }
    return T;
}

2、根据前序序列和中序序列建二叉树

根据二叉树的前序后中序遍历的结果来重建二叉树。
前序:A B D E H I C F G
中序:D B H E I A F C G

怎么做了?注意,前序遍历第一个节点A肯定是根节点;那么,我们可以在中序遍历中找到这个根节点A,那么中序遍历中根节点A左边的点(D B H E I)就是A的左子树的节点,右边的点(F C G)就是A节点右子树的节点。再看前序遍历的节点B,对于节点B也是一样,中序遍历中根节点B左边的点(D)就是B的左子树的节点,右边的点(H E I)就是B节点右子树的节点………

根据上述这种思想递归下去,可以逐步找到每个点的位置,然后就可以将树建立起来,具体看代码(是leetcode上的题)

代码:

class Solution {
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值