題目:
建立一顆二叉查詢樹,輸出每個節點的數值以及該節點的左右子樹的數值。
格式如下:
輸入格式:
第一行輸入乙個正整數 n (1 <= n <= 1000),代表序列裡元素個數。
第二行輸入 n 個正整數,代表序列 a 的 n 個元素(0 <= ai <= 10000)。保證序列裡的元素值互不相同。
輸出格式:
請按格式「a(b, c)」,輸出引號之間的內容,a 代表每個結點的權值,b 代表其左孩子結點權值,c 代表右孩子結點權值,如果孩子結點為空,則輸出「#」代替。乙個結點輸出一行,按結點的權值從小到大輸出。注意輸出「,」後面的空格。
答案:
二叉查詢樹的中序遍歷是從小到大排列的,所以只用改變中序遍歷**即可
1 #include2using
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拒絕了。遍歷的過程中去翻轉每乙個節點的左右孩子就可以達到整體翻轉的效果。注意只要把每乙個節點的左右孩子翻轉一下,就可以達到整體翻轉的效果 這道題目使用前序遍歷和後序遍歷都可以,唯...