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

    题目:

      二叉搜索树与双向链表

    链接: 

      https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5?tpId=13&tqId=11179&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

    题目描述:

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

    思路:

      对于一个二叉搜索树,当我们进行中序遍历的时候是按从小到大的顺序进行遍历。

      所以按照中序遍历的顺序,当我们遍历当前节点的时候,它的左子树已经转换成了一个排序的链表了,并且处在链表中的最后一个节点是当前值最大的节点,接着去遍历转换右子树。

    代码:

      

     1 /*
     2 struct TreeNode {
     3     int val;
     4     struct TreeNode *left;
     5     struct TreeNode *right;
     6     TreeNode(int x) :
     7             val(x), left(NULL), right(NULL) {
     8     }
     9 };*/
    10 class Solution{
    11 public:
    12     TreeNode* Convert(TreeNode* pRootOfTree)
    13     {
    14         TreeNode * leftLastNode = nullptr;
    15         ConvertNode(pRootOfTree, &leftLastNode);
    16         TreeNode *head = leftLastNode;
    17         while(head != nullptr && head->left != nullptr){
    18             head = head->left;
    19         }
    20         return head;
    21     }
    22     void ConvertNode(TreeNode *root ,TreeNode **leftLastNode){
    23         if(root == nullptr)
    24               return;
    25         TreeNode *node = root;        //当前节点
    26         if(node->left != nullptr){
    27             ConvertNode(node->left,leftLastNode);
    28         }
    29         node->left = *leftLastNode;
    30         if(*leftLastNode != nullptr){
    31             (*leftLastNode)->right = node;
    32         }
    33         *leftLastNode = node;
    34         if(node->right != nullptr){
    35             ConvertNode(node->right,leftLastNode);
    36         }
    37     }
    38 };
  • 相关阅读:
    python eval() 进行条件匹配
    spring boot 学习
    JAVA基础
    在mac上进行JAVA开发
    移动端开发基础【8】页面生命周期
    数据挖掘【1】概述(引言)
    项目管理【26】 | 项目成本管理-规划成本管理
    项目管理【24】 | 项目进度管理-控制进度
    项目管理【25】 | 项目成本管理-成本管理概念
    操作系统【8】 Linux虚拟内存和物理内存
  • 原文地址:https://www.cnblogs.com/wangshujing/p/6940209.html
Copyright © 2011-2022 走看看