二叉樹 還原二叉樹 二叉搜尋樹

2021-10-01 09:22:39 字數 2037 閱讀 7959

先序遍歷的特點:先遍歷根結點,再遍歷左子樹,最後再遍歷右子樹

中序遍歷的特點:先遍歷左子樹,再遍歷根結點,最後再遍歷右子樹

後序遍歷的特點:先遍歷左子樹,再遍歷右子樹,最後再遍歷根結點

舉例

先序遍歷:a b d f g h i e c

中序遍歷:f d h g i b e a c

如上,根據先序遍歷以及中序遍歷的特點,也就是說先序遍歷的第乙個為根結點,在中序遍歷中找到根結點,則在中序遍歷中根結點左邊為左子樹,根結點右邊為右子樹。

如下圖,根據上述分解完後再將分解出的序列看作一組新的先序序列和中序序列,繼續分解,直到序列中只有乙個元素

;//左子樹分解

p->right =

restore

(a + k +

1, b + k +

1, n - k -1)

;//右子樹分解

return p;

}void

preorder

(node *bt)

//先序遍歷二叉樹

else

if(g ==2)

printf

("空樹\n");

}int

height

(node *p)

//深度的計算

二叉搜尋樹的原則:任意乙個結點的左子樹均小於該結點,任意乙個結點的右子樹均大於該結點。

特點:二叉搜尋樹的中序遍歷為非遞增序列。

二叉搜尋樹其實質也就是有序數列的二分搜尋的過程。直接給**,

#include

# include

# include

# include

using

namespace std;

int cnt;

int a[

1000];

struct node

;node *

newnode()

void

jianshu

(node *t,

int d)

else

}else

if(d

>data)

else

}else

return;}

void

bianli

(node *t)

}int

main()

cnt =0;

bianli

(t);

for(i =

0; i <= cnt -

1; i++

)else

}return0;

}

希望能對你有一定的幫助,望大佬指

樹 二叉樹 二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 13輸出 true 示例 2 輸入 5 14 3 6輸出 false 解釋 輸入為 ...

排序二叉樹or搜尋二叉樹or查詢二叉樹

排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...

排序二叉樹or搜尋二叉樹or查詢二叉樹

排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...