开发者社区> 问答> 正文

怎么用非递归算法创建二叉树

怎么用非递归算法创建二叉树

展开
收起
知与谁同 2018-07-20 19:47:19 1693 0
1 条回答
写回答
取消 提交回答
  • TA有点害羞,没有介绍自己...
    代码:
    void Tree<T>::creat_tree(TreeNode<T> * &pointer)
    {
    //非递归实现对森林的赋值;*******************************
    T temp;
    stack<TreeNode<T> *> creat_help;
    cin>>temp;
    if(temp=='#')
    {
    pointer=NULL;
    return;
    }
    pointer=new TreeNode<T>;
    pointer->get_val()=temp;
    creat_help.push(pointer);
    TreeNode<T> * temp_pointer=pointer;
    int tag=0; //标志位,值为0,表示处理结点的左孩子,值为1,表示处理结点的右孩子;
    while(cin>>temp)
    {
    if(temp!='#')
    {
    if(tag==0)
    {
    temp_pointer->get_LeftMostcld()=new TreeNode<T>;
    temp_pointer->get_LeftMostcld()->get_val()=temp;
    creat_help.push(temp_pointer->get_LeftMostcld());
    temp_pointer=temp_pointer->get_LeftMostcld();
    }
    else
    {
    temp_pointer->get_Rightslib()=new TreeNode<T>;
    temp_pointer->get_Rightslib()->get_val()=temp;
    creat_help.push(temp_pointer->get_Rightslib());
    temp_pointer=temp_pointer->get_Rightslib();
    tag=0;
    }
    }
    else
    {
    if(tag==0)
    {
    temp_pointer->get_LeftMostcld()=NULL;
    tag=1;
    }
    else
    {
    temp_pointer->get_Rightslib()=NULL;

    }
    if(creat_help.empty())
    return;
    temp_pointer=creat_help.top();
    creat_help.pop();
    }
    }
    }
    2019-07-17 22:55:23
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载