埋め込む:
bool tree_isBalanced(tree_t tree);
// EFFECTS: returns true if tree is balanced, false otherwise
あなたのために実装されていると仮定できる次の機能を考えると:
bool tree_isEmpty(tree_t tree);
// EFFECTS: returns true if tree is empty, false otherwise
tree_t tree_make();
// EFFECTS: creates an empty tree.
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
int tree_elt(tree_t tree);
// REQUIRES: tree is not empty
// EFFECTS: returns the element at the top of tree.
tree_t tree_left(tree_t tree);
// REQUIRES: tree is not empty
// EFFECTS: returns the left subtree of tree
tree_t tree_right(tree_t tree);
// REQUIRES: tree is not empty
// EFFECTS: returns the right subtree of tree
ツリーのすべてのノードで右側のサブツリーと左側のサブツリーが同じ高さである場合、ツリーはバランスが取れています。ツリーの高さは、ツリーのルートからツリーの最も深いノードまでのパスに存在するノードの数として定義されます。ノードが 1 つしかないツリーの高さは 1 で、空のツリーの高さは 0 です。したがって、空のツリーは自明に完全にバランスが取れていると見なされます。
ツリーを下に移動するときに成長する再帰にどのように対処できますか?