【剑指offer-Java版】39二叉树的深度
来源:互联网 发布:视频剪辑配音软件 编辑:程序博客网 时间:2024/05/22 08:24
二叉树的深度:递归
判断二叉树是否是平衡二叉树:注意二叉树平衡代表的是所有非叶子节点都是一棵平衡树 – 而不仅仅是根节点
public class _Q39<T> { public int TreeDepth(BinaryTreeNode<?> tree){ if(tree == null) return 0; if(tree.leftChild == null && tree.rightChild == null) return 1; int left = TreeDepth(tree.leftChild); int right = TreeDepth(tree.rightChild); return (left > right ? left : right) + 1; } public boolean IsBalance(BinaryTreeNode<?> tree, int depth[]){ if(tree == null) return true; int depthL[] = {0}; int depthR[] = {0}; // 相当于后序遍历 if(IsBalance(tree.leftChild, depthL) && IsBalance(tree.rightChild, depthR)){ int diff = depthL[0] - depthR[0]; if(diff <= 1 && diff >= -1){ depth[0] = (depthL[0] > depthR[0] ? depthL[0] : depthR[0]) + 1; return true; } } return false; } }
测试代码:
public class _Q39Test extends TestCase { _Q39<?> treeJudge = new _Q39(); public void test(){ BinaryTreeNode<Integer> root = new BinaryTreeNode<>(); BinaryTreeNode<Integer> node1 = new BinaryTreeNode<>(); BinaryTreeNode<Integer> node2 = new BinaryTreeNode<>(); BinaryTreeNode<Integer> node3 = new BinaryTreeNode<>(); BinaryTreeNode<Integer> node4 = new BinaryTreeNode<>(); BinaryTreeNode<Integer> node5 = new BinaryTreeNode<>(); BinaryTreeNode<Integer> node6 = new BinaryTreeNode<>(); root.value = 10; node1.value = 6; node2.value = 14; node3.value = 4; node4.value = 8; node5.value = 12; node6.value = 16; root.leftChild = node1; root.rightChild = node2; //root.rightChild = null; node1.leftChild = node3; node1.rightChild = node4; node2.leftChild = node5; node2.rightChild = node6; node3.leftChild = null; node3.rightChild = null; node4.leftChild = null; node4.rightChild = null; node5.leftChild = null; node5.rightChild = null; node6.leftChild = null; node6.rightChild = null; System.out.println(treeJudge.TreeDepth(root)); int depth[] = {0}; System.out.println(treeJudge.IsBalance(root, depth)); } }
1 0
- 【剑指offer-Java版】39二叉树的深度
- 剑指Offer 39题 二叉树的深度 && 判断平衡二叉树 Java版
- 剑指offer-39 二叉树的深度
- 剑指offer 39 - 二叉树的深度
- 剑指Offer面试题39(Java版):二叉树的深度
- 剑指Offer面试题39(Java版):二叉树的深度
- 剑指Offer 39 二叉树的深度+平衡二叉树
- 剑指offer----二叉树的深度----java实现
- 牛客:剑指offer:二叉树的深度(Java)
- Java算法-剑指offer-二叉树的深度
- 剑指offer: 二叉树的深度(树)
- 剑指Offer之二叉树的深度
- 剑指offer--二叉树的深度
- 剑指offer之二叉树的深度
- 剑指Offer之 - 二叉树的深度
- 《剑指offer》二叉树的深度
- 剑指 offer:二叉树的深度
- 剑指offer—二叉树的深度
- caffe 如何训练自己的数据图片
- 在搜索领域,我是他们的老师,谷歌抄袭百度的技术
- BroadcastReceiver的工作过程
- 服务器上图片的存储
- qt的Qt::ConnectionType详细以及信号参数传递
- 【剑指offer-Java版】39二叉树的深度
- AsyncTask doInBackgroud not running
- java项目打包成exe文件
- 如何实时查看mysql当前连接数?
- Xcode真机测试could not find developer disk image解决方法
- QtPropertyBrowser2.6在Qt Creator中的编译部署
- Android 上传图片到后台的一直方式Base64的String形式
- getResource()和getResourceAsStream()以及路径问题
- java spring中对properties属性文件加密及其解密