資料結構與演算法之二叉樹訓練營

2021-08-30 21:53:21 字數 2213 閱讀 4731

public

inttreedepth

(treenode root)

public treelinknode getnext

(treelinknode node)

return right;

}while

(node.next != null)

node = node.next;

}return null;

}

public treenode reconstructbinarytree

(int

pre,

int[

] in)

//呼叫遞迴重建二叉樹邏輯

treenode root =

constructcore

(pre,

0,pre.length-

1,in,

0,in.length-1)

;return root;

}private treenode constructcore

(int

pre,

int beginpre,

int endpre,

int[

] in,

int beginin,

int endin)

//返回當前前序遍歷子串行中的第乙個元素,該元素為子樹節點

treenode root =

newtreenode

(pre[beginpre]);

//迴圈查詢當前子樹根節點在中序遍歷子串行中的位置,並劃分左右子樹,進行遞迴

for(

int i = beginin ; i <= endin ; i++

)return root;

}

public

boolean

hassubtree

(treenode root1,treenode root2)

//遞迴子樹查詢二叉樹b是否存在

private

boolean

issubtree

(treenode root1,treenode root2)

public arraylist

printfromtoptobottom

(treenode root)}}

return result;

}

public arraylist

>

print

(treenode root)

//從右向左入棧子節點

}else

}//更新子節點入棧順序

flag =

!flag;

//新增當前層的遍歷結果

result.

add(temp)

;//更新下一次處理的節點棧

cur = next;

}return result;

}

public

boolean

issymmetrical

(treenode root)

public

boolean

issymmetricalcore

(treenode orign,treenode mirror)

public

boolean

verifysquenceofbst

(int

sequence)

//核心邏輯,遞迴判斷左右子樹是否為二叉搜尋樹

private

boolean

core

(int

sequence,

int begin,

int end)

}//檢測右子樹中的節點是否都大於根節點

for(

; i < end; i++

)//遞迴判斷左右子樹結構是否為二叉搜尋樹

return

core

(sequence,begin,border-1)

&&core

(sequence,border,end-1)

;}

資料結構與演算法之二叉樹

樹同時具有鍊錶和陣列的優點,關於樹的術語有 根 樹頂端的節點 葉子節點 沒有子節點的節點 樹那個節點所對應的資料結構 節點物件類,包含資料 public class node 將資料插到樹中 public void inser int id,double dd public boolean dele...

資料結構與演算法之二叉樹

陣列的優缺點 鍊錶的優缺點 缺點 在進行查詢時,效率仍然較低,需要從頭節點開始遍歷,時間複雜度為o n 樹的優點 能提高資料儲存和讀取的效率,比如利用二叉搜尋樹,既可以保證資料的查詢速度,同時也可以保證資料的插入,刪除,修改的速度。樹的常用術語 結合示意圖理解 樹的基本性質 二叉樹 每個節點最多只能...

資料結構與演算法訓練營

學習過程 cliarifation 確定題目 possible solutions 盡可能的多思考解題方式 coding 多寫 test case 寫測試用例 讀題 思考 直接看解法,比較不同解法的優劣 背誦 默寫 自己寫多種解法比較 一天之後反覆練習 一周之後再練習 面試之前恢復訓練 資料結構分類...