zoukankan      html  css  js  c++  java
  • 面试题27:二叉排序树与双向链表

    题目描述

    输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。比如输入图4.12中左边的二叉搜索树,则输出转换之后的排序双向链表。二叉树结点的定义如下:

    题目分析

    剑指Offer(纪念版)P151

    代码实现

    BinaryTreeNode* Convert(BinaryTreeNode* pRootOfTree)
    {
        BinaryTreeNode *pLastNodeInList = NULL;
        ConvertNode(pRootOfTree, &pLastNodeInList);
    
        // pLastNodeInList指向双向链表的尾结点,
        // 我们需要返回头结点
        BinaryTreeNode *pHeadOfList = pLastNodeInList;
        while(pHeadOfList != NULL && pHeadOfList->m_pLeft != NULL)
            pHeadOfList = pHeadOfList->m_pLeft;
    
        return pHeadOfList;
    }
    
    void ConvertNode(BinaryTreeNode* pNode, BinaryTreeNode** pLastNodeInList)
    {
        if(pNode == NULL)
            return;
    
        BinaryTreeNode *pCurrent = pNode;
    
        if (pCurrent->m_pLeft != NULL)
            ConvertNode(pCurrent->m_pLeft, pLastNodeInList);
    
        pCurrent->m_pLeft = *pLastNodeInList; 
        if(*pLastNodeInList != NULL)
            (*pLastNodeInList)->m_pRight = pCurrent;
    
        *pLastNodeInList = pCurrent;
    
        if (pCurrent->m_pRight != NULL)
            ConvertNode(pCurrent->m_pRight, pLastNodeInList);
    }
    

      

  • 相关阅读:
    Linux 防火墙配置
    【存在问题,待修改】SSH 远程登陆
    Hadoop 本地模式安装
    CentOS7 安装 JDK
    JS的DOM操作
    JavaScript
    格式与布局(定位)
    样式表
    表单、内嵌网页
    HTML中的一般标签、常用标签和表格
  • 原文地址:https://www.cnblogs.com/xwz0528/p/4832431.html
Copyright © 2011-2022 走看看