static void rightleft(const struct TreeNode *root) { if (!root) return; rightleft(root->right); inorder2[p++] = root->val; rightleft(root->left); }
bool isSymmetric(struct TreeNode *root) { inorder1 = inorder2 = 0; p = 0; leftright(root); inorder2 = malloc(p * sizeof(inorder2[0])); p = 0; rightleft(root); p = !memcmp(inorder1, inorder2, p * sizeof(inorder1[0])); if (p) { p = 0; left_pre(root); p = 0; right_pre(root); p = !memcmp(inorder1, inorder2, p * sizeof(inorder1[0])); } free(inorder1); free(inorder2); return(p); }
void avl::rebalance(avl_node* root){ if(root -> get_balance() == -2){ if((root -> get_lchild()) -> get_balance() == -1){ leftleft(root); } else{ leftright(root); } } else{ if((root -> get_rchild()) -> get_balance() == 1){ //DEBUG!! // print_tree(); //DEBUG!! rightright(root); } else{ rightleft(root); } } }