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

    题目描述

    输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。
     
     1 /*
     2 struct TreeNode {
     3     int val;
     4     struct TreeNode *left;
     5     struct TreeNode *right;
     6     TreeNode(int x) :
     7             val(x), left(NULL), right(NULL) {
     8     }
     9 };*/
    10 class Solution {
    11 public:
    12     TreeNode* Convert(TreeNode* pRootOfTree)
    13     {
    14         TreeNode *pLastNodeInTree = NULL;
    15         TreeConvert(pRootOfTree, pLastNodeInTree);
    16         TreeNode *pFirstNodeInTree = pLastNodeInTree;
    17         while (pFirstNodeInTree != NULL && pFirstNodeInTree->left != NULL) {
    18             pFirstNodeInTree = pFirstNodeInTree->left;
    19         }
    20         return pFirstNodeInTree;
    21     }
    22     void TreeConvert(TreeNode* pNode, TreeNode* &pLastNodeInTree) {
    23         if (pNode == NULL) {
    24             return;
    25         }
    26         TreeNode* pCurrent = pNode;
    27         if (pNode->left != NULL) {
    28             TreeConvert(pNode->left, pLastNodeInTree);
    29         }
    30         pCurrent->left = pLastNodeInTree;
    31         if (pLastNodeInTree != NULL)
    32             pLastNodeInTree->right = pCurrent;
    33         pLastNodeInTree = pCurrent;
    34         if (pNode->right != NULL) {
    35             TreeConvert(pNode->right, pLastNodeInTree);
    36         }
    37     }
    38 };
  • 相关阅读:
    11.分类与监督学习,朴素贝叶斯分类算法
    14 深度学习-卷积
    13-垃圾邮件分类2
    12.朴素贝叶斯-垃圾邮件分类
    9、主成分分析
    8、特征选择
    7.逻辑回归实践
    6.逻辑归回
    5.线性回归算法
    15 手写数字识别-小数据集
  • 原文地址:https://www.cnblogs.com/qinduanyinghua/p/11370144.html
Copyright © 2011-2022 走看看