如何判斷一棵二叉樹是完全二叉樹 2

2022-09-12 09:42:17 字數 683 閱讀 4683

我們知道堆也是一棵完全二叉樹,一般是由陣列來實現的。如果父結點的index是k, 那麼它的左子結點index為2k+1, 右子結點的index為2k+2. 乙個比較自然的想法就是,給樹的每個結點標上index, 每個結點的index必須小於樹的總結點數目。

實現如下.

public class treenode

public int val

public treenode left

public treenode right

}public bool iscompletebinarytree(treenode root)

private int countoftree(treenode root)

return 1 + countoftree(root.left) + countoftree(root.right);

}private bool iscompletebinarytree(treenode root, int rootindex, int totalnodes)

return iscompletebinarytree(root.left, 2* rootindex+1, totalnodes)

&& iscompletebinarytree(root.right, 2* rootindex+2, totalnodes);

}

如何判斷一棵二叉樹是完全二叉樹

嚴蔚敏那本教材上的說法 乙個深度為k,節點個數為 2 k 1 的二叉樹為滿二叉樹。這個概念很好理解,就是一棵樹,深度為k,並且沒有空位。首先對滿二叉樹按照廣度優先遍歷 從左到右 的順序進行編號。一顆深度為k二叉樹,有n個節點,然後,也對這棵樹進行編號,如果所有的編號都和滿二叉樹對應,那麼這棵樹是完全...

如何判斷一棵二叉樹是完全二叉樹

嚴蔚敏那本教材上的說法 乙個深度為k,節點個數為 2 k 1 的二叉樹為滿二叉樹。這個概念很好理解,就是一棵樹,深度為k,並且沒有空位。首先對滿二叉樹按照廣度優先遍歷 從左到右 的順序進行編號。一顆深度為k二叉樹,有n個節點,然後,也對這棵樹進行編號,如果所有的編號都和滿二叉樹對應,那麼這棵樹是完全...

判斷一棵二叉樹是否是完全二叉樹

層次遍歷乙個二叉樹,掃瞄到某個結點左孩子或右孩子為空時即停止,檢查此時佇列內所有結點是否均為葉子結點 include include define false 0 define true 1typedef int status typedef int elemtype typedef struct ...