Java二叉搜尋樹中的搜尋與插入

Java二叉搜尋樹中的搜尋與插入

很容易想到遞迴,

遞迴左右子樹,每次和根節點的值判斷,然後遞迴呼叫。

遞迴結束條件是root 等於要查詢的那個值。

class Solution { public TreeNode searchBST(TreeNode root, int val) { if(root == null || root。val == val){ return root; } if(root。val > val){ return searchBST(root。left, val); } if(root。val < val){ return searchBST(root。right, val); } return null; }}//迭代法 while (true) { if (root == null || root。val == val) return root; root = root。val > val ? root。left : root。right; }

二叉樹:遞迴函式究竟什麼時候需要返回值,什麼時候不要返回值?

因為搜尋到目標節點了,就要立即return了,這樣才是找到節點就返回(搜尋某一條邊),如果不加return,就是遍歷整棵樹了。

作者:carlsun-2

Java二叉搜尋樹中的搜尋與插入

不同點:

// return insertIntoBST(root。left, val); 不是返回這個,題目要求返回整顆數

root。left = insertIntoBST(root。left, val);

class Solution { public TreeNode insertIntoBST(TreeNode root, int val) { if(root == null){ return new TreeNode(val); } if(root。val > val){ // return insertIntoBST(root。left, val); 不是返回這個,題目要求返回整顆數 root。left = insertIntoBST(root。left, val); } if(root。val < val){ root。right = insertIntoBST(root。right, val); } return root; }}