題目
翻轉一棵二叉樹。
輸入:
4
/ \
2 7
/ \ / \
1 3 6 9
輸出:
4
/ \
7 2
/ \ / \
9 6 3 1
函數原型
C
的函數原型:
struct TreeNode* invertTree(struct TreeNode* root){}
邊界判斷
struct TreeNode* invertTree(struct TreeNode* root){
if( root == NULL )
return NULL;
}
算法設計:遞歸
看題目的意思,就是交換左邊、右邊,每個結點的左右子樹都進行交換。
void swap(struct TreeNode* root){
struct TreeNode* tmp = root->left;
root->left = root->right;
root->right = tmp;
}
struct TreeNode* invertTree(struct TreeNode* root){
if( root == NULL )
return NULL;
invertTree( root->left );
invertTree( root->right );
swap( root ); // 交換 root->left root->right
return root;
}
- 時間複雜度:
- 空間複雜度: