平衡二叉树
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
方法一:递归,每次求解left,right的深度然后做差判断。之后递归left&&right。
1 class Solution { 2 public: 3 bool IsBalanced_Solution(TreeNode* pRoot) { 4 if(pRoot==NULL) return true; 5 int left=treedepth(pRoot->left); 6 int right=treedepth(pRoot->right); 7 int diff=left-right; 8 if(diff>1||diff<-1) 9 return false; 10 return IsBalanced_Solution(pRoot->left)&&IsBalanced_Solution(pRoot->right); 11 } 12 private: 13 int treedepth(TreeNode* p){ 14 if(p==NULL) return 0; 15 int left=treedepth(p->left); 16 int right=treedepth(p->right); 17 return (left>right?left+1:right+1); 18 } 19 };
方法二:每次递归都判断是否为平衡,减少遍历次数。
1 class Solution { 2 public: 3 bool IsBalanced_Solution(TreeNode* pRoot) { 4 if(pRoot==NULL) return true; 5 int depth=0; 6 return isbalance(pRoot,&depth); 7 } 8 private: 9 bool isbalance(TreeNode* p,int * depth){ 10 if(p==NULL){ 11 *depth=0; 12 return true; 13 } 14 15 int left; 16 bool bl; 17 bl=isbalance(p->left,&left); 18 int right; 19 bool br; 20 br=isbalance(p->right,&right); 21 if(bl&&br){ 22 *depth=left>right?left+1:right+1; 23 int diff=left-right; 24 if(diff>1||diff<-1) 25 return false; 26 else 27 return true; 28 } 29 return false; 30 } 31 };
联系方式:emhhbmdfbGlhbmcxOTkxQDEyNi5jb20=
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了