DAY 69 LeetCode学习笔记
程序员文章站
2022-03-05 09:12:47
...
前言
昨天给忙忘了,树的最大深度,广度和深度都利用了depth和pos,最左边pos2,右边pos2+1.
题目
源码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
int ans;
Map<Integer,Integer> leftMap;
public int widthOfBinaryTree(TreeNode root) {
// ====方法1,广度========
// Queue<Node> queue=new LinkedList<>();
// queue.add(new Node(root,0,0));
// int curDepth=0,left=0,ans=0;
// while(!queue.isEmpty()){
// Node cur=queue.poll();
// if(cur.node!=null){
// queue.add(new Node(cur.node.left,cur.depth+1,cur.pos*2));
// queue.add(new Node(cur.node.right,cur.depth+1,cur.pos*2+1));
// if(curDepth!=cur.depth){
// curDepth=cur.depth;
// left=cur.pos;
// }
// ans=Math.max(ans,cur.pos-left+1);
// }
// }
// return ans;
// ====方法1,广度========
// ========方法2,深度====
ans=0;
leftMap=new HashMap();
dfs(root,0,0);
return ans;
}
public void dfs(TreeNode node, int depth,int pos){
if(node==null){
return;
}
// java8后的特性,key中的value不存在时直接创建
leftMap.computeIfAbsent(depth,x->pos);
ans=Math.max(ans,pos-leftMap.get(depth)+1);
dfs(node.left,depth+1,2*pos);
dfs(node.right,depth+1,2*pos+1);
}
//======== 方法2=======
}
// ========方法1======
// class Node{
// TreeNode node;
// int pos,depth;
// Node(TreeNode n,int d,int p){
// node=n;
// depth=d;
// pos=p;
// }
// }
// ========方法1======
上一篇: innerhtml是jquery方法么
下一篇: css作用和html的区别是什么