• 建立完全二叉树,交换其左右孩子后,先序输出~


    早上起来后,决定把昨天的第二题解决一下,当时我都不知道完全二叉树的概念,所以今天就上度娘理解了一下完全二叉树的概念。

      完全二叉树:假设一棵树有h层,则除了第h层外,其他层(1~h-1)的结点数都达到了最大,而第h层的所有节点都连续集中在左边。

    引用度娘的图片

    这道题目用到了完全二叉树的一个重要性质:

    即当2*i<n,树的左孩子结点为tree[2*i];当2*i+1<n时,树的右孩子结点为tree[2*i+1]。

    主要包括三个函数,一个是建立完全二叉树,一个实现左右孩子结点交换,一个实现先序输出。

    代码如下:

     1 #include"iostream"
     2 using namespace std;
     3 #include<string>
     4 
     5 typedef struct BTLnode
     6 {
     7     char data;
     8     struct BTLnode *lchild;
     9     struct BTLnode *rchild;
    10 }*BigTree;
    11 
    12 bool creatree(BigTree &T,string s,int i)
    13 {
    14     if(i>s.size())
    15         return 0;
    16     
    17         char c=s.at(i-1);
    18         if(c==' ')
    19         {
    20             T=NULL;
    21         }
    22         else
    23         {
    24         T=(BigTree)malloc(sizeof(BTLnode));
    25         
    26     
    27             T->data=c;
    28             T->lchild=NULL;
    29             T->rchild=NULL;
    30 
    31             creatree(T->lchild,s,2*i);
    32             creatree(T->rchild,s,2*i+1);
    33 
    34         }
    35     
    36 }
    37 void change(BigTree &T)
    38 {
    39     BigTree k;
    40     k=(BigTree)malloc(sizeof(BTLnode));
    41     if(T)
    42     {
    43         k=T->lchild;
    44         T->lchild=T->rchild;
    45         T->rchild=k;
    46         change(T->lchild);
    47         change(T->rchild);
    48         
    49     }
    50 }
    51 void preorder(BigTree &T)
    52 {
    53     if(T)
    54     {
    55         cout<<T->data<<" "<<endl;
    56         preorder(T->lchild);
    57         preorder(T->rchild);
    58     }
    59 }
    60 
    61 int main()
    62 {
    63     BigTree T;
    64     string s;
    65     cout<<"请输入字符串:"<<endl;
    66     cin>>s;
    67     creatree(T,s,1);
    68     change(T);
    69     preorder(T);
    70 
    71     return 0;
    72 }

    2013-01-20  今天是第二天,continue.....

    这篇文是昨天写的,刚从日记里边转出来的 2013-01-21

  • 相关阅读:
    在仅有的一次生命里活出自己最大的可能
    每个人都渴望赞美
    历练领导力的八字要诀
    爱情语录
    Ps
    别跟我要钱,我是教授
    改变人生的五个问题
    纪晓岚妙用口才
    智慧和智商
    经典
  • 原文地址:https://www.cnblogs.com/paradises/p/2870359.html
Copyright © 2020-2023  润新知