226.翻转二叉树 (优先掌握递归)
代码
TreeNode* invertTree(TreeNode* root) {
if(root==NULL)return root;
swap(root->left,root->right);
invertTree(root->left);
invertTree(root->right);
return root;
}
101. 对称二叉树 (优先掌握递归)
代码
bool isSymmetric(TreeNode* root) {
if(left==NULL&& right!=NULL) return false;
else if(left!=NULL&& right==NULL) return false;
else if(left==NULL&& right==NULL) return true;
else if(left->val!=right->val) return false;
bool outside = compare(left->left,right->right);
bool inside = compare(left->right,right->left);
bool idSame = outside && inside;
return isSame;
}
bool isSymmetric(TreeNode* root)
{
if(root==NULL) return true;
return compare(root-。left,root->right);
}
104.二叉树的最大深度 (优先掌握递归)
代码
int getdepth(TreeNode* node)
{
if(node==NULL) return 0;
int leftdepth = getdepth(node->left);
int rightdepth = getdepth(node->right);
int depth = 1+ max(leftdepth,rightdepth);
return depth;
}
int maxDepth(TreeNode* root) {
return getdepth(root);
}
111.二叉树的最小深度 (优先掌握递归)
代码
int getDepth(TreeNode* node)
{
if(node==NULL) return 0;
int leftDepth = getDepth(node->left);
int rightDepth = getDepth(node->right);
if(node->left==NULL&& node->right !=NULL)
{
return 1+ rightDepth;
}
if(node->left!=NULL&& node->right==NULL)
{
return 1 + leftDepth;
}
int result = 1+min(leftDepth,rightDepth);
}
int minDepth(TreeNode* root) {
return getDepth(root);
}