zoukankan      html  css  js  c++  java
  • 剑指offer25-二叉搜索树与双向链表

    输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

    思路:中序遍历二叉搜索树递归与非递归方式

        TreeNode* Convert(TreeNode* pRootOfTree)
        {
            //中序遍历
            //left指向前一个节点,right指向后一个节点
            //非递归
            if(pRootOfTree==NULL) return pRootOfTree;
            TreeNode*p,*pre,*proot;
            stack<TreeNode*>st;
            bool flag=false;
            p=pRootOfTree;
            do{
                while(p!=NULL)
                {
                    st.push(p);
                    p=p->left;
                }
                if(!st.empty())
                {
                    p=st.top();
                    if(pre!=NULL)
                    {
                        p->left=pre;
                        pre->right=p;
                    }
                    pre=p;
                    if(!flag)
                    {
                        proot=p;
                        flag=true;
                    }
                    st.pop();
                    //if(p->right!=NULL)
                    p=p->right;
                }
            }while(p!=NULL||!st.empty());
                return proot;
        }

    //递归

        TreeNode* Convert(TreeNode* pRootOfTree)
        {

           if(pRootOfTree==NULL)return NULL;
            TreeNode*pre=NULL,*p=pRootOfTree;
            ConvertHelper(pRootOfTree,pre);
            while(p->left!=NULL)
            {
                p=p->left;
            }
            return p;
        }
        void ConvertHelper(TreeNode* root,TreeNode*&pre)
        {
            if(root==NULL)return;
            ConvertHelper(root->left,pre);
            root->left=pre;
            if(pre)pre->right=root;
            pre=root;
            ConvertHelper(root->right,pre);
        }

  • 相关阅读:
    OpenCascade Ray Tracing Rendering
    Create New Commands in Tcl
    OpenCascade Modeling Algorithms Fillets and Chamfers
    OpenCascade Modeling Algorithms Boolean Operations
    Construction of Primitives in Open Cascade
    Open Cascade Data Exchange STL
    Tcl Tk Introduction
    Open Cascade DataExchange IGES
    Netgen mesh library : nglib
    Hello Netgen
  • 原文地址:https://www.cnblogs.com/trouble-easy/p/12969675.html
Copyright © 2011-2022 走看看