面試訓練二叉搜尋樹建雙向鏈表

來源:互聯網
上載者:User

這種題目看到的時候 ,我想的第一感覺 就是中序遍曆二叉樹。

但是至於鏈表如何來建,確實有些難度。要是不看書,真心搞不定。

採用的方法 是中序遍曆 對吧  遞迴後 左子樹 最後一個節點時 8 此時根結點為10 ,還未進入右子樹遞迴。

那麼只需將8和10建立鏈表,那麼右子樹如何處理呢,必須要有前一個節點10,才能夠進入,同時因為是中序吧,遍曆到最後面的節點時12 ,此時如果上一個節點時10那麼肯定可以連起來,想想看,中序遍曆 不是剛好10以後輸出的12麼,因此這裡就有料了。

至於料是什麼 當然是每次中序的遞迴遍曆 儲存上一個節點。並且左子樹最後一個節點需要和根結點建立關係。

soga ,來coding了

#include "stdio.h"typedef struct Node{ int key; struct Node *left; struct Node *right;}Lnode;void buildTree(Lnode **head){Lnode *p=NULL;int value;scanf("%d",&value);if(value ==-1){*head=NULL;}else{p = (Lnode *)malloc(sizeof(Lnode));p->key = value;*head=p;buildTree(&((*head)->left));buildTree(&((*head)->right));}return;}void traverse(Lnode *p){if(p==NULL)return;printf("%d ",p->key);traverse(p->left);traverse(p->right);}void traverseList(Lnode *p){while(p!=NULL){printf("%d ",p->key);p=p->right;}}void convertList(Lnode *head,Lnode **lastNode){Lnode *current = head;if(head == NULL)return;if(head->left)convertList(head->left,lastNode);head->left = *lastNode;if(*lastNode != NULL)(*lastNode)->right=head;*lastNode=current;if(head->right)convertList(head->right,lastNode);}Lnode *buildDouble(Lnode *head){Lnode *lastNode = NULL;Lnode *p=NULL;convertList(head,&lastNode);p=lastNode;while(p->left != NULL){p=p->left;}return p; }int main(){Lnode *head=NULL;Lnode *listHead=NULL;int totalNum= 10;int index =0;int value=0;buildTree(&head);traverse(head);printf("\n");listHead = buildDouble(head);traverseList(listHead);printf("\n");return 0;}

這道題考察的非常好

1 遞迴

2 樹

3 遍曆

這三個性質結合起來考,真心的給力

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.