데이터 구조 - 이 진 트 리 및 그 일부 조작

2370 단어 데이터 구조
박 전 소감:
이 진 트 리 도 데이터 구조 에서 매우 중요 한 구조 이다. 특히 현재 빅 데 이 터 를 볼 때 이 진 트 리 의 저장 과 정렬 알고리즘 을 찾 는 것 이 특히 중요 하 다.
다음은 코드 블록:
#include
#include
#include
#include
#include
using namespace std;

typedef struct Node
{
	Node *lc, *rc;
	char data;

}node,*binary_tree;

void create(binary_tree &h)
{
	char ch;
	cin >> ch;
	if (ch == '%')
	{
		h = NULL;
	}
	else
	{
		h = new Node;
		h->data = ch;
		create(h->lc);
		create(h->rc);
	}
}

void preorder(binary_tree h)
{
	if (h)
	{
		cout << h->data<lc);
		preorder(h->rc);
	}
	//cout << endl;
}

int get_depth(binary_tree h)
{
	if (h == NULL)
	{
		return 0;
	}
	int l_depth = 1 + get_depth(h->lc);
	int r_depth = 1 + get_depth(h->rc);
	int max_depth = l_depth > r_depth ? l_depth : r_depth;
	return max_depth;
}

int get_leaves(binary_tree h)
{
	if(h==NULL)              //     
	{
		return 0;
	}
	if (h->lc == NULL && h->rc == NULL)
	{
		return 1;
	}

	return get_leaves(h->lc) + get_leaves(h->rc);
}

int get_nodenum(binary_tree h)        //       
{
	if (h == NULL)
	{
		return 0;
	}
	//if (h != NULL)//&&(h->lc!=NULL||h->rc!=NULL))
	//{
	//	return 1;
	//}
	return get_nodenum(h->lc) + get_nodenum(h->rc)+1;
}

int get_mid_nodenum(binary_tree h)    //       
{
	get_nodenum(h);
	get_leaves(h);
	//int mid_node_sum;
	//if (h == NULL)
	//{
	//	return 0;
	//}
	//if (!(h->lc == NULL && h->rc == NULL))
	//{
	//	 
	//}
	get_mid_nodenum(h->lc)++;
	get_mid_nodenum(h->rc)++;
	int l_mid_node_num = get_mid_nodenum(h->lc) ;
	int r_mid_node_num = get_mid_nodenum(h->rc) ;
	= l_mid_node_num + r_mid_node_num+1 ;
	//return get_mid_nodenum(h->lc) + get_mid_nodenum(h->rc);
	return get_nodenum(h) - get_leaves(h);
}

void mirror(binary_tree h)
{
	if (h == NULL)
	{
		return;
	}
	binary_tree t = h->lc;
	h->lc = h->rc;
	h->rc = t;
	mirror(h->lc);
	mirror(h->rc);
}

int main()
{
	binary_tree hwq;
	create(hwq);
	cout << "     :" << endl;
	preorder(hwq);
	cout << endl;
	cout <

이 진 트 리 와 관련 된 알고리즘 이 많 고 복잡 하 며 제 수준 이 유한 하기 때문에 여러분 께 일일이 소개 하지 않 겠 습 니 다.여러분 이 관심 이 있 으 시 면 제 졸업 선배 사이트 에 가서 보 셔 도 됩 니 다.
링크: www. subetter. com (좋 습 니 다)

좋은 웹페이지 즐겨찾기