递归生成二叉树 day2

为了方便 决定把节点类 二叉树类写在一个cpp文件里面

节点类

struct Node
{
Node* pLeft;
Node* pRight;
char data;
}

二叉树的重构方法

Node* Rebuild(string preOrder,string midOrder)
{
    if(preOrder.size()==0)
        return NULL;

    if(midOrder.size()==0)
        return NULL;
    Node* pRoot = new Node;
    (pRoot)->data = preOrder[0];
    int root_pos = midOrder.find_first_of(preOrder[0]);

    if(root_pos == -1)
    {
        return NULL;
    }

    int left_ele_num = root_pos;

    int right_ele_num = preOrder.size()-left_ele_num-1;

    pRoot->pLeft=Rebuild(preOrder.substr(1,1+left_ele_num),midOrder.substr(0,left_ele_num));

    pRoot->pRight=Rebuild(preOrder.substr(root_pos+1,right_ele_num),midOrder.substr(root_pos+1,right_ele_num));
    return pRoot;
}
阅读更多
个人分类: 数据结构和算法
博主设置当前文章不允许评论。

递归的方式创建二叉树

2017年08月17日 211KB 下载

递归画树(Qt实现)

2013年01月14日 3KB 下载

没有更多推荐了,返回首页

不良信息举报

递归生成二叉树 day2

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭