搜尋二叉樹:二叉樹的中序遍歷,在遍歷的過程中,節點值都是遞增的
class node(object):
def __init__(self,value):
self.value = value
self.right = none
self.left = none
def isbst(head):
if head == none:
return true
stack =
pre = float("-inf")
while head!=none or len(stack)!=0:
if head!=none:
head = head.left
else:
head = stack.pop()
print(head.value)
if head.value > pre:
pre = head.value
head = head.right
else:
return false
return true
判斷是否是完全二叉樹
思想:1、按層遍歷二叉樹,從每層的左邊向右一次遍歷所有節點
2、如果當前節點有右孩子節點,但是沒有左孩子節點,直接返回false
3、如果當前節點並不是所有左右孩子都有,那麼之後的所有節點必須都是葉子節點,否則返回false
4、遍歷過程中如果不返回false,則遍歷結束後返回true
def iscbt(node):
if node == none:
return true
queue =
isleaf = false
while queue:
root = queue.pop(0)
l = root.left
r = root.right
if (l==none and r!=none) or ((l!=none or r!=none) and isleaf):
return false
if l!=none:
if r!=none:
else:
isleaf = true
return true
判斷一顆二叉樹是否為對稱二叉樹
本題源自劍指offer 可以自定以一種對稱前序遍歷,即先遍歷父節點,再訪問右子節點,在訪問左子節點,null節點也訪問,將得到的序列和前序遍歷比較,相同就說明二叉樹是對稱的。遞迴 bool issymmetrical treenode proot bool issymmetricalcore tre...
判斷一顆二叉樹是否為平衡二叉樹
一.判斷一顆二叉樹是否為平衡二叉樹 題目 輸入一顆二叉樹的根節點,判斷該二叉樹是否為平衡二叉樹。所謂的平衡二叉樹是指以當前結點為根結點的樹,左右子樹的深度不得超過1。例如 解決思路一 按照前序遍歷的路線判斷。實現 二叉樹的高度 比較左右子樹那個高,高的加1既為二叉樹的高度 int binarytre...
判斷一顆二叉樹是否是平衡二叉樹
方法一,參考 template typename t intdepthtree bstreenode pbs template typename t bool isbalancetree bstreenode pbs intdepthleft depthtree pbs left intdepthr...