24 二叉搜尋樹的後序遍歷序列

2021-07-03 22:29:07 字數 2003 閱讀 1534

輸入乙個整數陣列,判斷該整數陣列是不是某二叉搜尋樹的後序遍歷的結果,如果是則返回true,否則返回false。假設輸入陣列的任意兩個數字都互不相同

在後序遍歷得到的序列中,最後乙個數字是樹的根結點的值。陣列中前面的數字可以分為兩部分:第一部分是左子樹結點的值,它們都比根結點的值小,第二部分是右子樹結點的值,它們都比根結點的值大。

bool verifysquenceofbst(int sequence, int

length)

//判斷作為右子樹陣列的值,是否都大於根結點

int j = i;

for (; j < length - 1; j++)

}//判斷左子樹是否為二叉搜尋樹

bool left = true;

if (i > 0)

//判斷右子樹是否為二叉搜尋樹

bool right = true;

if (i < length - 1)

return (left && right);

}

// ********************測試**********************

void test(char* testname, int sequence, int length, bool expected)

// 10

// / \

// 6 14

// /\ /\

// 4 8 12 16

void test1()

; test("test1", data, sizeof(data) / sizeof(int), true);

}// 5

// / \

// 4 7

// /

// 6

void test2()

; test("test2", data, sizeof(data) / sizeof(int), true);

}// 5

// /

// 4

// /

// 3

// /

// 2

// /

// 1

void test3()

; test("test3", data, sizeof(data) / sizeof(int), true);

}// 1

// \

// 2

// \

// 3

// \

// 4

// \

// 5

void test4()

; test("test4", data, sizeof(data) / sizeof(int), true);

}// 樹中只有1個結點

void test5()

; test("test5", data, sizeof(data) / sizeof(int), true);

}void test6()

; test("test6", data, sizeof(data) / sizeof(int), false);

}void test7()

; test("test7", data, sizeof(data) / sizeof(int), false);

}void test8()

int main(void)

24 二叉搜尋樹的後序遍歷序列

輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。c 1 class solution 89 bool verify vector sequence,int left int right 18for int i ...

24 後序遍歷二叉搜尋樹

題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結 果。如果是則輸出 yes,否則輸出 no。假設輸入的陣列的任意兩個數字都互不相 同。思路 先找到右子樹的開始位置,然後分別進行左右子樹遞迴處理。實現 public boolean verifysquenceofbst int s...

Q24 二叉搜尋樹的後序遍歷序列

q 輸入整數陣列,判斷該陣列是否為某二叉搜尋樹的後序遍歷結果。題目裡有幾個字眼要求我們熟知,第一就是二叉搜尋樹,第二個就是後序遍歷,第三就是它是樹。1 二叉搜尋樹 左孩子的值 根結點的值 右孩子的值 2 後序遍歷 左 右 根 3 樹 若一棵樹是滿足某一性質x的x樹,則其子樹若存在,則也定為滿足x性質...