[226].翻轉二叉樹

 


題目

翻轉一棵二叉樹。

輸入:

     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;
}
  • 時間複雜度:Θ(n)\Theta(n)
  • 空間複雜度:Θ(n)\Theta(n)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章