程式設計之美 02 把二元查詢樹變成為排序的雙向鍊錶

2021-07-23 19:22:08 字數 857 閱讀 5206

題目:輸入一棵二元查詢樹,將該二元查詢樹轉換成乙個排序的雙向鍊錶。

要求不能建立任何新的結點,只調整指標的指向。

10 / \

6 14

/ \ / \

4 8 12 16

轉換成雙向鍊錶:

4=6=8=10=12=14=16。

首先我們定義的二元查詢樹節點的資料結構如下:

struct bstreenode

;

主要考察:二叉樹的中序遍歷演算法的思想.

**如下:

#include

#include

using namespace std;

struct bstreenode

;typedef struct bstreenode doublelist;

doublelist *phead, *plistindex;

void converttodoublelist(bstreenode *pcurrent);

void addbstreenode(bstreenode *&pcurrent, int value);

void ergodicbstree(bstreenode *pcurrent);

int main()

void addbstreenode(bstreenode *&pcurrent, int value)

else

}void ergodicbstree(bstreenode *pcurrent)

void converttodoublelist(bstreenode *pcurrent)

把二元查詢樹變成雙向鍊錶

輸入一棵二元查詢樹,將該二元查詢樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只調整指標的指向。include struct bstreenode typedef bstreenode doublelist doublelist phead doublelist plistindex voi...

程式設計之美 17 求二元樹的度

題目 輸入一棵二元樹的根結點,求該樹的深度。從根結點到葉結點依次經過的結點 含根 葉結點 形成樹的一條路徑,最長路徑的長度為樹的深度。例如 輸入二元樹 8 6 10 5 7 9 11 輸出該樹的深度3。二元樹的結點定義如下 struct sbinarytreenode a node of the b...

把二元查詢樹轉變成排序的雙向鍊錶

1.首先是如何建立乙個二叉查詢樹 2.再對二叉查詢樹進轉換 如下 bstreenode1.cpp 定義控制台應用程式的入口點。include stdafx.h include using namespace std struct bstreenode typedef bstreenode doubl...