判斷二叉樹是否為平衡二叉樹

2021-09-26 12:04:12 字數 756 閱讀 9276

要判斷二叉樹是否為平衡二叉樹

平衡二叉樹的定義 :在乙個二叉樹中 每個節點子樹的左右高度差不超過1

1、首先判斷它的根節點是否為空

若是的話,就是平衡二叉樹

2、分別求出左右子樹的高度

若高度的絕對值不超過一則為平衡二叉樹

//計算二叉樹高度

public static int calchigh(node1 root)

int left = calchigh(root.left);

int right = calchigh(root.right);

int high = math.max(left, right);

return high;

}//判斷是否為平衡樹

public static boolean isbalanced(node1 root)

boolean left=isbalanced(root.left);

if(!left)

boolean right=isbalanced(root.right);

if(!right)

int leftheigh=calchigh(root.left);

int rightheigh=calchigh(root.right);

int diff=leftheigh-rightheigh;

if(diff>1||diff<-1)

return true;

}

判斷二叉樹是否為平衡二叉樹

一 線性思維 遍歷每個節點都時候,求左右子樹的深度,如果左右子樹深度相差不超過1,繼續遞迴遍歷左右節點,此種方法會重複遍歷,時間效率不高 is balanced t if t is null return true left treedepth t.left right treedepth t.ri...

判斷二叉樹是否為平衡二叉樹

題目 平衡二叉樹的性質為 要麼是一棵空樹,要麼任何乙個節點的左右子樹高度差的絕對值不超過1。給定一棵二叉樹的頭結點head,判斷這棵二叉樹是否為平衡二叉樹。要求 如果二叉樹的節點數為n,要求時間複雜度為o n 判斷二叉樹是否為二叉樹 public boolean isbalance node hea...

判斷二叉樹是否為平衡二叉樹

給定一棵樹,判斷是否為平衡二叉樹 逐層根據高度判斷是否平衡 def is balance1 self def height node if node is none return 0 l height node.left r height node.right return max l,r 1 de...