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

    剑指OFFER 二叉搜索树与双向链表

    题目描述

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

    分析

    先按中序遍历一次,然后根据中序遍历的顺序来组织双向链表

    代码

    /*
    struct TreeNode {
    	int val;
    	struct TreeNode *left;
    	struct TreeNode *right;
    	TreeNode(int x) :
    			val(x), left(NULL), right(NULL) {
    	}
    };*/
    class Solution {
    public:
        
        vector<TreeNode*> v;
        
        void construct_list(void)
        {
            int size = v.size();
            if(size == 1){
                v[0]->left = NULL;
                v[0]->right = NULL;
                return;
            }
    
            v[0]->left = NULL;
            
            for(int i=1;i<size;i++)
            {
                v[i-1]->right = v[i];
                v[i]->left = v[i-1];
            }
            v[size-1]->right = NULL;
            
        }
        
        //中序遍历
        void recur(TreeNode* node)
        {
            if(node == NULL)return;
            recur(node->left);
            v.push_back(node);
            recur(node->right);
        }
        
        
        TreeNode* Convert(TreeNode* root)
        {
            if(root == NULL)return NULL;
            recur(root);
            
            construct_list();
            
            return v[0];
        }
    };
    
  • 相关阅读:
    zookeeper部署
    Hadoop集群的构建和安装
    numpy ndarray求其最值的索引
    两数之和
    盛最多水的容器
    mysql 单表卡死
    Leetcode 258. Add Digits
    Matlab中添加路径与去除路径
    Leetcode 136 Single Number
    Leetcode 485. Max Consecutive Ones
  • 原文地址:https://www.cnblogs.com/virgildevil/p/12269707.html
Copyright © 2011-2022 走看看