題目1503 二叉搜尋樹與雙向鍊錶

2021-07-02 15:53:27 字數 1008 閱讀 7945

題目描述:輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。

輸入:輸入可能包含多個測試樣例。

對於每個測試案例,輸入的第一行為乙個數n(0

輸出:對應每個測試案例,

輸出將二叉搜尋樹轉換成排序的雙向鍊錶後,從煉表頭至鍊錶尾的遍歷結果。

樣例輸入:

1

2 1 0 0 3 0 0

樣例輸出:1 2 3

分析:當讀入乙個數字不為0時,那麼接下來讀入的乙個數字是以當前讀入數字為根節點的左孩子,也就是說,接下來讀入的數字在雙向鍊錶中是當前讀入數字的前驅;當讀入乙個數字為0時,那麼接下來讀入的數字在雙向鍊錶中是當前讀入數字的後繼的後繼。當理解了這之後,可以依次讀入數字,並在乙個雙向鍊錶上插入新節點,當前節點的數字非零時,即在當前節點之前插入乙個新節點作為當前節點的先驅;否則,則在當前節點的後繼之後插入乙個新節點作為後繼的後繼。其中關於雙向鍊錶的插入過程,需要修改前驅的next和後繼的prev指標以及給插入節點的next,prev賦值。

**如下:

// 1503new.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include

struct node

};int main()

}p=p->next;

}else     //接下來的讀入是當前讀入的前驅

p=p->prev;}}

while(h->prev!=null)//尋找頭節點

//bool flag=true;

while(h!=null)

p=h;

h=h->next;

delete p;//釋放分配的空間

}printf("\n");}}

return 0;

}

題目1503 二叉搜尋樹與雙向鍊錶

時間限制 1 秒 記憶體限制 128 兆 題目描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。輸入 輸入可能包含多個測試樣例。對於每個測試案例,輸入的第一行為乙個數n 0 輸出 對應每個測試案例,輸出將二叉搜尋樹轉換成排序的雙向...

二叉搜尋樹與雙向鍊錶

1.問題描述 輸入一顆二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。來自 劍指offer 2.分析 對於二叉搜尋樹我們知道,樹的左孩子都比根節點要下,樹的右孩子都比根結點要大,根據這個特點,我們進行中序遍歷得到的序列就會滿足題目的要求,我們...

二叉搜尋樹與雙向鍊錶

問題描述 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。演算法 struct binarytreenode binarytreenode convert binarytreenode prootoftree plastnodeinl...