zoukankan      html  css  js  c++  java
  • 1.把二元查找树转变成排序的双向链表

    参照了别人的代码,自己写一遍,好好理解下

    View Code
     1 #include <iostream>
    2 using namespace std;
    3
    4 struct BSTreeNode
    5 {
    6 BSTreeNode *m_pLeft;
    7 BSTreeNode *m_pRight;
    8 int m_Value;
    9 };
    10
    11 BSTreeNode *phead;
    12 BSTreeNode *pnext;
    13
    14 void converttoDoubleList(BSTreeNode *pCurrent) //结点链表化
    15 {
    16 pCurrent->m_pLeft = pnext;
    17 if(NULL==pnext)
    18 {
    19 phead=pCurrent;
    20 }
    21 else
    22 {
    23 pnext->m_pRight = pCurrent;
    24 }
    25 pnext = pCurrent;
    26 cout<<pCurrent->m_Value<<endl;
    27 }
    28
    29 //加入结点,建立二元查找树
    30 void AddNodeToTree(BSTreeNode * &pCurrent,int value)
    31 {
    32 if(NULL==pCurrent)
    33 {
    34 BSTreeNode *pTree = new BSTreeNode();
    35 pTree->m_pLeft = NULL;
    36 pTree->m_pRight = NULL;
    37 pTree->m_Value = value;
    38 pCurrent = pTree;
    39 }
    40 else if(pCurrent->m_Value > value )
    41 {
    42 AddNodeToTree(pCurrent->m_pLeft,value);
    43 }
    44 else if(pCurrent->m_Value < value )
    45 {
    46 AddNodeToTree(pCurrent->m_pRight,value);
    47 }
    48 }
    49
    50 //中序遍历二元查找树
    51 void InOrderTraverse(BSTreeNode *pCurrent)
    52 {
    53 if(NULL==pCurrent)
    54 {
    55 return ;
    56 }
    57 if(NULL!=pCurrent->m_pLeft)
    58 {
    59 InOrderTraverse(pCurrent->m_pLeft);
    60 }
    61
    62 converttoDoubleList(pCurrent); //左子树遍历完后,对该指针链表化
    63
    64 if(NULL!=pCurrent->m_pRight)
    65 {
    66 InOrderTraverse(pCurrent->m_pRight);
    67 }
    68 }
    69
    70 int main()
    71 {
    72 BSTreeNode *pstart = NULL;
    73 phead = pnext = NULL;
    74
    75 AddNodeToTree(pstart,10);
    76 AddNodeToTree(pstart,16);
    77 AddNodeToTree(pstart,14);
    78 AddNodeToTree(pstart,12);
    79 AddNodeToTree(pstart,4);
    80 AddNodeToTree(pstart,8);
    81 AddNodeToTree(pstart,6);
    82
    83 InOrderTraverse(pstart);
    84
    85 return 0;
    86 }

  • 相关阅读:
    给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组以及删除了重复条目的原数组。
    mysql批量替换某个字段的值!
    LInux常用命令
    盒模型布局
    box-sizing -- 盒模型
    vue中使用svg字体图标
    字体图标
    在线字体
    Java QQ邮箱发送邮件
    Java 对全局用户是否登录验证
  • 原文地址:https://www.cnblogs.com/chenbin7/p/2198911.html
Copyright © 2011-2022 走看看