226.翻转二叉树
void reverseTree(TreeNode* node){if(node == nullptr) return;if(node->left) reverseTree(node->left);if(node->right) reverseTree(node->right);TreeNode* tmp = node->left;node->left = node->right;node->right = tmp;}TreeNode* invertTree(TreeNode* root) {reverseTree(root);return root;}
101.对称二叉树
bool compare(TreeNode* left, TreeNode* right){if(!left && !right){return true;}else if(!left && right){return false;}else if(left && !right){return false;}else if(left->val != right->val){return false;}bool com1 = compare(left->left, right->right);bool com2 = compare(left->right, right->left);bool result = com1 && com2;return result;}bool isSymmetric(TreeNode* root) {if(root == nullptr) return true;return compare(root->left, root->right);}
559.N叉树的最大深度
int getDepth(Node* node){if(node == nullptr) return 0;int max = 0;for(std::vector<Node*>::iterator it = node->children.begin(); it != node->children.end(); ++it){int depth = getDepth(*it);if(depth > max){max = depth;}}int depth = 1 + max;return depth;}int maxDepth(Node* root) {return getDepth(root);}
111.二叉树的最小深度
int digui(TreeNode* node){if(node == nullptr) return 0;int left = digui(node->left);int right = digui(node->right);if(!left){return 1 + right;}if(!right){return 1 + left;}int depth = 1 + min(left, right);return depth;}int minDepth(TreeNode* root) {return digui(root);}