인터넷에서이 문제에 대한 도움을 얻었지만 도움이 필요합니다. 이것은 트리 구조 자체로 직접 작업하지 않기 때문에 이진 트리에 대한 일반적인 삽입 문제는 아닙니다. 내 교수는 그 자신을 썼고 우리에게 이진 트리에 관련된 함수를 작성하는 데 사용할 수있는 함수를 제공했습니다. 따라서 노드와 포인터 등을 사용할 수 없습니다. 또한이 C++ 있습니다.이진 트리 삽입 (순서대로 정렬)
어쨌든 여기에 내가 작성해야하는 재귀 함수에 대한 설명이 나와 있습니다 (문제를 해결하기위한 시작 시도와 함께). 새로운 트리를 완전히 반환한다는 것을 주목하십시오. 실제로는 기존 트리에 무언가를 추가하지는 않습니다.
tree_t insert_tree(int elt, tree_t tree)
{
/*
// REQUIRES; tree is a sorted binary tree
// EFFECTS: returns a new tree with elt inserted at a leaf such that
// the resulting tree is also a sorted binary tree.
//
// for example, inserting 1 into the tree:
//
// 4
// / \
// / \
// 2 5
// /\ /\
// 3
// /\
//
// would yield
// 4
// / \
// / \
// 2 5
// /\ /\
// 1 3
// /\/\
//
// Hint: an in-order traversal of a sorted binary tree is always a
// sorted list, and there is only one unique location for
// any element to be inserted.
*/
if (elt < elt(tree_left(tree)){
return insert_tree(tree_left(left));
} else {
return insert_tree(tree_right(right));
}
}
그리고 여기에 우리가 사용할 수있는 기능은 다음과 같습니다
extern bool tree_isEmpty(tree_t tree);
// EFFECTS: returns true if tree is empty, false otherwise
extern tree_t tree_make();
// EFFECTS: creates an empty tree.
extern tree_t tree_make(int elt, tree_t left, tree_t right);
// EFFECTS: creates a new tree, with elt as it's element, left as
// its left subtree, and right as its right subtree
extern int tree_elt(tree_t tree);
// REQUIRES: tree is not empty
// EFFECTS: returns the element at the top of tree.
extern tree_t tree_left(tree_t tree);
// REQUIRES: tree is not empty
// EFFECTS: returns the left subtree of tree
extern tree_t tree_right(tree_t tree);
// REQUIRES: tree is not empty
// EFFECTS: returns the right subtree of tree
extern void tree_print(tree_t tree);
// MODIFIES: cout
// EFFECTS: prints tree to cout.
을 유니. 나는 실제로 이것을 알아야만했다. 특정 문제가 있습니까? 당신이 tree_left와 tree_right에 각각 전달하려고하는 왼쪽이나 오른쪽 변수가 없기 때문에 컴파일이 안될 것 같아 보인다. – Joe
컴파일 할 의도가 없습니다. 그게 내 뇌가 가고있는 곳입니다. 나는 완전히 혼란 스럽다. 나는이 프로젝트를 며칠 동안 진행해 왔으며 이것은 내가 작성해야하는 마지막 두 가지 기능 중 하나입니다. 그래서 내 두뇌가 튀겨집니다. 나는 올바른 방향으로 추진력이 필요하다. – Slims
그것은 내가 본 중 가장 역겨운 API 중 하나입니다. 당신의 교수가 C++이라고 주장합니까? – Puppy