Java 如何反转二叉树
让我们假设一棵二叉树Java 如何反转二叉树,java,binary-tree,Java,Binary Tree,让我们假设一棵二叉树 a / \ b c / \ / \ d e f g / \ / \ / \ / \ h i j k l m n o 如何将其反转,即 a / \ c b / \ / \ f g d e / \ / \
a
/ \
b c
/ \ / \
d e f g
/ \ / \ / \ / \
h i j k l m n o
如何将其反转,即
a
/ \
c b
/ \ / \
f g d e
/ \ / \ / \ / \
l m n o h i j k
我应该如何跟踪将要反转的二叉树的值。因为当我穿过一棵树时,我会在左半边,如何将它与左半边交换
void reverseLevelOrder(struct node* root)
{
int h = height(root);
int i;
for (i=h; i>=1; i--) //THE ONLY LINE DIFFERENT FROM NORMAL LEVEL ORDER
printGivenLevel(root, i);
}
/* Print nodes at a given level */
void printGivenLevel(struct node* root, int level)
{
if (root == NULL)
return;
if (level == 1)
printf("%d ", root->data);
else if (level > 1)
{
printGivenLevel(root->left, level-1);
printGivenLevel(root->right, level-1);
}
}对人性的信仰恢复了!!!!!!
void mirror(struct node* node)
{
if (node==NULL)
return;
else
{
struct node* temp;
/* do the subtrees */
mirror(node->left);
mirror(node->right);
/* swap the pointers in this node */
temp = node->left;
node->left = node->right;
node->right = temp;
}
}