二叉树转换成双链表

题目描述

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


主要代码如下:

class Solution {
public:
    TreeNode* Convert(TreeNode* pRootOfTree)
    {
        if(pRootOfTree==NULL)
         return NULL;
        TreeNode *pre=NULL;
        TreeNode *head=isconvert(pRootOfTree,pre);
        if(head==NULL)
            return NULL;
        while(head->left!=NULL)
            head=head->left;
        return head;
       
       
       
    }
    //中序遍历建立双链表,采用递归的方法
    TreeNode *isconvert(TreeNode *root,TreeNode *pre){
       if(root==NULL)
            return NULL;
     //左子树
       
        if(root->left!=NULL){
            pre=isconvert(root->left,pre);
        }
        if(pre!=NULL){
            pre->right=root;
        }
        root->left=pre;
        pre=root;
        //右子树
        if(root->right!=NULL){
            pre=isconvert(root->right,pre);
        }
        return pre;
   
    }
};


阅读更多
想对作者说点什么? 我来说一句

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

不良信息举报

二叉树转换成双链表

最多只允许输入30个字

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