第三章:查詢與排序(下)----------- 3.15基礎學習_樹、二叉樹、堆排序

Curtis_發表於2019-03-10

樹、二叉樹、堆排序:

對於二叉樹:

①、i 的子節點: 2i+1, 2i+2;

②、i 的父節點: (i-1)/2 。

先序:根、左、右

中序:左、根、右

後序:左、右、根

N個節點的完全二叉樹:樹的高度:log2(N)取下整+1。(PS:根節點為第1層)

#include<iostream>
using namespace std;

int length;

//先序 
void preOrder(int arr[],int i){
	if(i>=length) return;
	cout<<arr[i]<<" ";//先輸出根節點 
	preOrder(arr,i*2+1);//輸出左子樹 
	preOrder(arr,i*2+2);//輸出右子樹 
}

//中序 
void inOrder(int arr[],int i){
	if(i>=length) return;
	inOrder(arr,i*2+1);//遞迴輸出左子樹
	cout<<arr[i]<<" ";//輸出根節點
	inOrder(arr,i*2+2);//遞迴輸出右子樹 
} 

int main(){
	int arr[]={78,56,34,43,4,1,15,2,23};
	length= 9;
	preOrder(arr,0);
	cout<<endl;
	cout<<"========================"<<endl;
	inOrder(arr,0);
	
	return 0;
} 

結果:

相關文章