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

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

     

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

     

    题解:这题也是参考了别人的最优解回答。首先看一下题目这个要求。大概就是下面图这个意思。

     一开始肯定会想到的是中序遍历。以中序遍历走完BST是可以得到一个递增的序列的。

    但由于这是一个双向链表,我们得在中序遍历上做一个处理。以,右根左的顺序来遍历,

    这样遍历完时,一定会指向最小的节点。

     

    代码:

     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* head = NULL;
    13     
    14     TreeNode* Convert(TreeNode* pRootOfTree){
    15         if(pRootOfTree == NULL )     return pRootOfTree;
    16         Convert(pRootOfTree->right);
    17         if(head == NULL)    head = pRootOfTree;
    18         else{
    19             head->left = pRootOfTree;
    20             pRootOfTree->right = head;
    21             head = pRootOfTree;
    22         }
    23         Convert(pRootOfTree->left);
    24         return head;
    25     }
    26 };
  • 相关阅读:
    关于System.currentTimeMillis()
    jpa
    java登录密码效验
    Yum 命令语法
    yum 源的配置与使用
    通过yum安装mysql
    centos 验证mysql的安装
    rpm
    GIT 切换到远程分支
    spring mvc 官方下载
  • 原文地址:https://www.cnblogs.com/Asumi/p/12405246.html
Copyright © 2011-2022 走看看