이 진 트 리 만 들 기 (재 귀적 + 순차 적 옮 겨 다 니 기)

1208 단어 데이터 구조
이 진 트 리 만 들 기 (재 귀적 + 순차 적 옮 겨 다 니 기)
(1) 자체 입력 데이터 요소, 참조 형식 또는 2 급 포인터
class treeNode
{
public:
	int value;
	treeNode *left;
	treeNode *right;
};

//    +         
void createBinaryTree(treeNode *&root)   //                  
{
	int num;
	cin >> num;
	if (num != -1)                   //  -1      
	{
		root = new treeNode;
		root->value = num;
		createBinaryTree(root->left);
		createBinaryTree(root->right);
	}
	else
		root = nullptr;
}
//   :1 2 3 -1 -1 4 -1 -1 5 6 -1 -1 -1 
//   :    :123456      :324165      :342651

/*
//         
void createBinaryTree_ptr(treeNode **root)
{
	int num;
	cin >> num;
	if (num != -1)
	{
		*root = new treeNode;
		(*root)->value = num;
		createBinaryTree_ptr(&((*root)->left));
		createBinaryTree_ptr(&((*root)->right));
	}
	else
		*root = nullptr;
}
*/

(2) 배열 이나 vector 형 참 을 입력 합 니 다.
void createBinaryTree_vector(treeNode *&root, vector::iterator &it)
{

	if ((*it) != -1)
	{
		root = new treeNode;
		root->value = *it;
		createBinaryTree_vector(root->left, ++it);
		createBinaryTree_vector(root->right, ++it);
	}
	else
		root = nullptr;
}

좋은 웹페이지 즐겨찾기