关于二叉树一些数据结构和算法相关的题目

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关于二叉树一些数据结构和算法相关的题目

最近总结了一些数据结构和算法相关的题目,这是第一篇文章,关于二叉树的。先上二叉树的数据结构:

class TreeNode{ int val; //左孩子 TreeNode left; //右孩子 TreeNode right;}

二叉树的题目普遍可以用递归和迭代的方式来解

1. 求二叉树的最大深度

int maxDeath(TreeNode node){ if(node==null){ return 0; } int left = maxDeath(node.left); int right = maxDeath(node.right); return Math.max(left,right) + 1;} 2. 求二叉树的最小深度

int getMinDepth(TreeNode root){ if(root == null){ return 0; } return getMin(root); } int getMin(TreeNode root){ if(root == null){ return Integer.MAX_V ALUE; } if(root.left == null } return Math.min(getMin(root.left),getMin(root.right)) + 1; }

3. 求二叉树中节点的个数

int numOfTreeNode(TreeNode root){ if(root == null){ return 0; } int left = numOfTreeNode(root.left); int right = numOfTreeNode(root.right); return left + right + 1; }

4. 求二叉树中叶子节点的个数

int numsOfNoChildNode(TreeNode root){ if(root == null){ return 0; } if(root.left==null } return numsOfNodeTreeNode(root.left)+numsOfNodeTreeNode(root.right); }

5. 求二叉树中第k层节点的个数

int numsOfkLevelTreeNode(TreeNode root,int k){ if(root == null||k1){ return -1; } return Math.max(left, right) + 1; }

7.判断二叉树是否是完全二叉树

什么是完全二叉树呢?参见

boolean isCompleteTreeNode(TreeNode root){ if(root == null){ return false; } Queue queue = new LinkedList(); queue.add(root); boolean result = true; boolean hasNoChild =

相关文档
最新文档