关闭

二叉树转换成双链表

215人阅读 评论(0) 收藏 举报

题目描述

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


主要代码如下:

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;
   
    }
};


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:20244次
    • 积分:592
    • 等级:
    • 排名:千里之外
    • 原创:38篇
    • 转载:4篇
    • 译文:1篇
    • 评论:5条
    最新评论