一个二叉树, 普普通通的二叉树, 结点是这样定义的:
typedef struct node_t {
struct node_t* parent;
struct node_t* left;
struct node_t* right;
int data;
} node;
再简单不过了, 现在递归创建一个二叉树. 假设现在的二叉树是左边这样的, 对调之后是右边这样的.
1 1
/ \ / \
/ \ / \
2 3 8 3
/ \ / / \ /
4 5 6 ----> 4 5 6
/ \ / \
9 8 9 2
/ /
0 0
要求一个函数 void swap(node* a, node* b)
, swap不能直接对调data:
// two和eight是内定的, 不要在意这些细节
printf("%d %d %d\n", two->data,
eight->data,
eight->right); // 2 8 0
swap(two, eight);
printf("%d %d %d\n", two->data,
eight->data,
eight->right->data); // 2 8 5
求一个, 多种/好的解法, 算法小白真心求教...