一道二叉查詢樹的應用題

2022-08-27 14:24:13 字數 1196 閱讀 5695

題目:

建立一顆二叉查詢樹,輸出每個節點的數值以及該節點的左右子樹的數值。

格式如下:

輸入格式:

第一行輸入乙個正整數 n (1 <= n <= 1000),代表序列裡元素個數。

第二行輸入 n 個正整數,代表序列 a 的 n 個元素(0 <= ai <= 10000)。保證序列裡的元素值互不相同。

輸出格式:

請按格式「a(b, c)」,輸出引號之間的內容,a 代表每個結點的權值,b 代表其左孩子結點權值,c 代表右孩子結點權值,如果孩子結點為空,則輸出「#」代替。乙個結點輸出一行,按結點的權值從小到大輸出。注意輸出「,」後面的空格。

答案:

二叉查詢樹的中序遍歷是從小到大排列的,所以只用改變中序遍歷**即可

1 #include2

using

namespace

std;

3class

node

13 ~node()

17if (rchild !=null) 20}

21void insert(int value) else

if (value >data) else

30 } else

else36}

37}38void

inorder()

42 cout << data<<"("

;43if(this->lchild==null)

46else

49 cout<<","

<<"";

50if(this->rchild==null)

53else

56 cout<<")"

<57if (rchild !=null) 60}

61};

62class

binarytree

69 ~binarytree() 73}

74void insert(int

value) else80}

81void inorder()

84};

85int

main()

94binarytree.inorder();

95return0;

96 }

一道二叉樹遍歷題

如何按照1234567的順序列印?一開始我想提供乙個getright 方法,即從4可以知道5,5可以知道6。但是卻是很蠢的 1.反向的指向,理論上是不支援的,在遞迴情況下就gg了 2.時間複雜度高 其實可以直接把第一層加到集合裡去,然後檢視他的左右子樹,然後再把左右子樹加進去。以此類推 反思反思下思...

一天一道演算法題 BST二叉查詢樹

您需要寫一種資料結構,來維護一些數 都是 10 9以內的數字 的集合,最開始時集合是空的。其中需要提供以下操作,操作次數 q不超過 10 4 查詢 x數的排名 排名定義為比當前數小的數的個數 1。若有多個相同的數,因輸出最小的排名 查詢排名為 x的數。求 x的前驅 前驅定義為小於 x,且最大的數 求...

二叉樹 二叉樹的反轉,一道簡單又經典的題目

226.翻轉二叉樹 聽說 homebrew的作者max howell,就是因為沒在白板上寫出翻轉二叉樹,最後被google拒絕了。遍歷的過程中去翻轉每乙個節點的左右孩子就可以達到整體翻轉的效果。注意只要把每乙個節點的左右孩子翻轉一下,就可以達到整體翻轉的效果 這道題目使用前序遍歷和後序遍歷都可以,唯...