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

    题目二叉搜索树与双向链表

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

    /*
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };*/
    class Solution {
    public:
        TreeNode* Convert(TreeNode* pRootOfTree)
        {
            
        }
    };

    解题代码:

     1 class Solution {
     2 public:
     3     TreeNode* Convert(TreeNode* pRootOfTree) {
     4         // pLastNodeInList 指向双向链表的最后一个节点
     5         TreeNode* pLastNodeInList = nullptr;
     6         ConvertNode(pRootOfTree, pLastNodeInList);
     7 
     8         // 返回双向链表的头结点
     9         TreeNode* pHeadOfList = pLastNodeInList;
    10         while(pHeadOfList != nullptr && pHeadOfList->left != nullptr)
    11             pHeadOfList = pHeadOfList->left;
    12         return pHeadOfList;
    13     }
    14 
    15 private:
    16     void ConvertNode(TreeNode* pNode, TreeNode * &pLastNodeInList){
    17         if(pNode == nullptr)
    18             return ;
    19 
    20         TreeNode* pCurrent = pNode;
    21         if(pCurrent->left != nullptr)
    22             ConvertNode(pCurrent->left, pLastNodeInList);
    23 
    24         pCurrent->left = pLastNodeInList;
    25         // 若此时链表含有节点,则将链表最后一个节点的右指针指向pCurrent节点
    26         if(pLastNodeInList != nullptr)
    27             pLastNodeInList->right = pCurrent;
    28         // 更新指向链表最后一个节点的指针
    29         pLastNodeInList = pCurrent;
    30 
    31         if(pCurrent->right != nullptr)
    32             ConvertNode(pCurrent->right, pLastNodeInList);
    33     }
    34 };
  • 相关阅读:
    如何基于Azure平台实现MySQL HA(方法论篇)
    如何对Azure磁盘性能进行测试
    Azure底层架构的初步分析
    聊聊Azure的安全性
    关于Azure带宽的测试
    JavaScript 优化
    SQL时间段查询
    win7+64位+Oracle+11g+64位下使用PLSQL+Developer+的解决办法
    putty 使用方法,中文教程
    怎样才能专心工作
  • 原文地址:https://www.cnblogs.com/iwangzhengchao/p/9875766.html
Copyright © 2011-2022 走看看