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 寫測試用例 讀題 思考 直接看解法,比較不同解法的優劣 背誦 默寫 自己寫多種解法比較 一天之後反覆練習 一周之後再練習 面試之前恢復訓練 資料結構分類...