二叉树题目----5 平衡二叉树 AND 根据二叉树创建字符串
生活随笔
收集整理的這篇文章主要介紹了
二叉树题目----5 平衡二叉树 AND 根据二叉树创建字符串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
平衡二叉樹
/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/int MAX(int a,int b) {return a > b ? a : b; }//求高度 int getHeight(struct TreeNode *root){if(root == NULL){return 0;}int left =getHeight(root->left);int right =getHeight(root->right);return MAX(left,right)+1; } bool isBalanced(struct TreeNode* root){if(root == NULL){return true;}//左子樹是不是平衡二叉樹bool is_left_balance =isBalanced(root->left);if(is_left_balance == false){return false;}//右子樹是不是平衡二叉樹bool is_right_balance =isBalanced(root->right);if(is_right_balance == false){return false;}int left_height = getHeight(root->left);int right_height = getHeight(root->right);int diff =left_height-right_height;//左右子樹高度差要小于1 if(diff >= -1 && diff <=1){return true;}else{return false;} }根據二叉樹創建字符串
class Solution { public:string tree2str(TreeNode* t) {if(t==nullptr)return "";stringstream ss;function<void(TreeNode*)> helper = [&ss, &helper](TreeNode* t){ss<<t->val;if(t->left==nullptr){if(t->right!=nullptr){ss<<"()(";helper(t->right);ss<<')';}}else if(t->right==nullptr){ss<<'(';helper(t->left);ss<<')';}else{ss<<'(';helper(t->left);ss<<")(";helper(t->right);ss<<')';}};helper(t);string s;ss>>s;return s;} };總結
以上是生活随笔為你收集整理的二叉树题目----5 平衡二叉树 AND 根据二叉树创建字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DNF驱魔与召唤取舍,求解释
- 下一篇: 再写堆(堆的性质,向下调整,建堆,堆的插