完全 平衡二叉樹的判斷與樹拷貝 子樹判斷

2021-07-30 07:16:18 字數 1188 閱讀 8041

完全二叉樹的n-1層是一顆滿二叉樹,最後一層的節點依次從左到右。所以只要n-1層第一次出現只有乙個左孩子沒有有孩子的情況或者沒有左孩子的情況就做乙個標記,往後的遍歷的過程中如果還出現了有節點有孩子的情況就可以判斷出此樹非完全二叉樹,否則就是完全二叉樹。

**實現如下:

bool iscompbinarytree(btnode *p)

else

}else

}while (!qu.empty())

}return

true;

}

平衡二叉樹:左子樹和右子樹的高度之差不超過一,並且左右子樹又分別的平衡二叉樹。所以根據概念可以使用遞迴的思想,這裡需要使用乙個函式計算樹的高度。

樹高度計算**:

int getdepth(btnode*root)

平衡二叉樹判斷的**實現:

bool isbalancebinarytree(btnode *p)

判斷一課樹是否為另外一課樹的子樹,方法很簡單,先通過函式findvalue找到子樹根節點在目標樹中的位置,然後再判斷n層子樹是否分別想等於目標樹。

findvalue實現:

btnode *findvalue(btnode *root,elemtype value)

return p;

}

子樹判斷**實現:

bool isequel(btnode*ptr, btnode*sub,int k)

bool is_subtree(btnode *ptr, btnode *sub)

樹之間的copy需要節點的購買,然後將這些節點按照別拷貝樹的結構建立。

buynode**:

btnode* buybtnode()

copy**:

btnode * copy(btnode *ptr)

判斷二叉樹是否平衡 是否完全二叉樹 是否二叉排序樹

1.判斷二叉樹是否平衡 求樹的高度 int treedepth node t return0 判斷二叉樹是否平衡 int isbalanced node t 2.判斷二叉樹是否相同 判斷兩棵二叉樹是否相同 int comptree node tree1,node tree2 拷貝二叉樹 void c...

判斷平衡二叉樹

演算法 樹 平衡二叉樹 平衡二叉樹的概念 左右節點的樹高之差小於1。1.計算節點的高。通過遞迴,求出左右子樹的高度,當前節點的高度,最大的那乙個 1。int getheight treenode root 2.通過遞迴的方法計算左子樹和右子樹的樹高之差是否有小於1的,有就直接返回false.publ...

判斷平衡二叉樹

package com.jsp.tree 判斷是否是平衡二叉樹 author jiangshipan 任何乙個節點 左子樹和右子數高度差小於1 以每乙個節點為頭的樹都是平衡的,則這個樹平衡 可能 1.左樹不平 2.右樹不平 3.左或右高 整棵樹 public class isbalancedtree...