zoukankan      html  css  js  c++  java
  • 二叉搜索树转化双向链表

    题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表


    要求排序可以想到中序遍历,把根节点的左右子树都转换成排序好的双向链表,再将根节点左子树的最大值,右子树的最小值与根节点相连。

    class Solution {
    public:
        TreeNode* Convert(TreeNode* pRootOfTree)
        {
            TreeNode *lastnode=NULL;
            convertnode(pRootOfTree,lastnode);
            TreeNode *headnode=lastnode;
            while(headnode!=NULL&&headnode->left!=NULL)
                headnode=headnode->left;
            return headnode;
        }
        void convertnode(TreeNode* pnode,TreeNode* &plastnode){
            if(pnode==NULL)
            return ;
            TreeNode *pcurrent=pnode;
            if(pcurrent->left!=NULL)
                convertnode(pcurrent->left,plastnode);
            pcurrent->left=plastnode;
            if(plastnode!=NULL)
                (plastnode)->right=pcurrent;
            plastnode=pcurrent;
            if(pcurrent->right!=NULL)
                convertnode(pcurrent->right,plastnode);
        }
    };


  • 相关阅读:
    2018年12月29日 Oracle查询性能优化
    B
    A
    洛谷 P2447 [SDOI2010]外星千足虫
    洛谷 P5358 [SDOI2019]快速查询
    欠的题目
    ZJU-ICPC Summer 2020 Contest 8 B-Picnic
    洛谷 P3164 [CQOI2014]和谐矩阵
    K
    J
  • 原文地址:https://www.cnblogs.com/nickqiao/p/7583344.html
Copyright © 2011-2022 走看看