zoukankan      html  css  js  c++  java
  • BST转换成有序链表

    把二元查找树转变成排序的双向链表(树)
    题目:
    输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。
    要求不能创建任何新的结点,只调整指针的指向。

     1 struct BSTreeNode{
     2     int val;
     3     BSTreeNode* left;
     4     BSTreeNode* right;
     5     BSTreeNode(int x) : val(x),left(nullptr),right(nullptr){}
     6 };
     7 
     8 void helper(BSTreeNode* root,BSTreeNode*& head, BSTreeNode*& tail){
     9     if(!root) return;
    10     helper(root->left,head,tail);
    11     root->left = tail;
    12     if(tail){
    13         tail->right = root;
    14     }else{
    15         head = root;
    16     }
    17     tail = root;
    18     helper(root->right,head,tail);
    19 }
    20 
    21 BSTreeNode* ConvertBSTree2List(BSTreeNode* root){
    22     BSTreeNode* head = nullptr;//list head
    23     BSTreeNode* tail = nullptr;//list tail
    24     helper(root,head,tail);
    25     return head;
    26 }
    27 
    28 int main(){
    29     BSTreeNode* root = new BSTreeNode(10);
    30     root->left = new BSTreeNode(6);
    31     root->right = new BSTreeNode(14);
    32     root->left->right = new BSTreeNode(8);
    33     BSTreeNode* head;
    34     head = ConvertBSTree2List(root);
    35     return 0;
    36 }
  • 相关阅读:
    循环语句
    流程控制
    特殊的赋值运算符
    位运算符
    运算符
    八种基本类型
    cmd基础命令
    springboot项目部署到tomcat步骤以及常见问题
    【算法问题】如何实现大整数相加
    【算法问题】删除k个数字后的最小值
  • 原文地址:https://www.cnblogs.com/wxquare/p/4946006.html
Copyright © 2011-2022 走看看