利用完全二叉树的性质,首先判断左子树的最右结点与右子树的最右结点高度,如果相等,只需要插入到左子树即可,否则插入右子树。
struct Node {
int val;
Node *l;
Node *r;
};
Node* insert(Node* root, Node*newnode) {
if (!root || !newnode)return NULL;
if (!root->l) {
root->l = newnode;
return root;
}
else if (!root->r) {
root->r = newnode;
return root;
}
int lrh = 0;
int rrh = 0;
Node *pNode = root->l;
while (pNode) {
lrh++;
pNode = pNode->r;
}
pNode = root->r;
while (pNode) {
rrh++;
pNode = pNode->r;
}
if (lrh != rrh) {
return insert(root->r, newnode);
}
else
return insert(root->l, newnode);
}
int main() {
system("pause");
return 0;
}