java實現遞迴和非遞迴求二叉樹深度
阿新 • • 發佈:2019-02-14
一.遞迴實現,深度優先遍歷二叉樹
public int dfs(TreeNode root){
if(null==root){
return 0;
}
int leftLength=dfs(root.left)+1;
int rightLength=dfs(root.right)+1;
return leftLength>rightLength?leftLength:rightLength;
}
二.非遞迴實現,藉助輔助資料結構佇列,廣度優先遍歷二叉樹
public int getTreeHeight(TreeNode root){ if(null==root){ return 0; } ArrayDeque<TreeNode> queue=new ArrayDeque<TreeNode>(); int height=0; queue.add(root); while(!queue.isEmpty()){ int size=queue.size(); for(int i=0;i<size;i++){ TreeNode node=queue.removeFirst(); if(null!=node.left){ queue.add(node.left); } if(null!=node.right){ queue.add(node.right); } } height++; } return height; }