【每日一题-12】平衡二叉树/镜像与杨氏矩阵查找

来源:互联网 发布:ajax怎么解析json数据 编辑:程序博客网 时间:2024/06/03 08:02

判断一棵二叉树是否是平衡二叉树

typedef struct TreeNode{int val;struct TreeNode* left;struct TreeNode* right;TreeNode(int data): val(data), left(NULL), right(NULL){}}Node;int TreeDepth(Node* root){if (root == NULL)return 0;int leftDepth = TreeDepth(root->left);int rightDepth = TreeDepth(root->right);return (leftDepth > rightDepth) ? (leftDepth + 1) : (rightDepth + 1);}bool IsBalanceTree(Node* root){if (NULL == root)return true;int leftDepth = TreeDepth(root->left);int rightDepth = TreeDepth(root->right);int diff = leftDepth - rightDepth;if (diff > 1 || diff < -1)return false;return IsBalanceTree(root->left) && IsBalanceTree(root->right);}
求一颗二叉树的镜像 
void Mirro(Node* root){if (root == NULL || (root->left == NULL&&root->right == NULL))return;Node* tmp = root->left;root->left = root->right;root->right = tmp;if (root->left != NULL)Mirro(root->left);if (root->right != NULL)Mirro(root->right);}
一个m*n的矩阵,从左到右从上到下都是递增的,给一个数x,判断x是否在矩阵中。要求效率尽可能的高
bool Find(int target, vector<vector<int> > array) {int row = array.size();int col = array[0].size();int i = 0, j = col-1;while (i < row && j >=0){if (target == array[i][j])return true;else if (target < array[i][j])j--;elsei++;}return false;}

原创粉丝点击