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

    题目描述

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

    解题思路

    采用中序遍历遍历二叉树,利用二叉排序树的特性,顺次连接节点,形成双向链表。

    C++代码实现

    /*
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };*/
    class Solution {
    public:
        TreeNode* Convert(TreeNode* pRootOfTree)
        {
            //指向根节点左子树的最后一个节点
            TreeNode *pLastNodeInList=NULL;
            ConvertNode(pRootOfTree ,&pLastNodeInList);
            TreeNode * pHeadFirst=pLastNodeInList;
            //记录根节点的值
            while(pHeadFirst!=NULL && pHeadFirst->left!=NULL){
                pHeadFirst=pHeadFirst->left;
            }
            return pHeadFirst;
        }
        void ConvertNode(TreeNode* pRootOfTree ,TreeNode** pLastNodeInlist){
            if (pRootOfTree ==NULL){
                return ;
            }
            TreeNode * cur=pRootOfTree;
            if (cur->left!=NULL){
                ConvertNode(cur->left,pLastNodeInlist);
            }
            cur->left=*pLastNodeInlist;
            if(*pLastNodeInlist!=NULL){
                (*pLastNodeInlist)->right=cur;
            }
            (*pLastNodeInlist)=cur;
            if (cur->right!=NULL){
                ConvertNode(cur->right,pLastNodeInlist);
            }
        }
    };
  • 相关阅读:
    访问者模式-Visitor Pattern
    jsp页面包含的几中方式
    Java Excel API的使用
    Java中导入、导出Excel
    【Oracle】OVER(PARTITION BY)函数用法
    myeclipse编辑jsp页面卡死
    myeclipse 最佳设置
    echarts学习总结
    java中 json和bean list map之间的互相转换总结
    泛型设计<T, PK extends Serializable>
  • 原文地址:https://www.cnblogs.com/fancy-li/p/11724935.html
Copyright © 2011-2022 走看看