一、題目描述
輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。
二、解題思路
非遞迴思路:中序遍歷二叉搜尋樹,就是對節點的順序遍歷。依次把節點儲存到集合中,然後讓集合中的前乙個元素指向後乙個元素,同時後乙個元素指向前乙個元素。
//把二叉搜尋樹轉變為排序的雙向鍊錶
public static treenode convert(treenode root)
list.add(root);
if(root.right !=null)
} }
劍指offer 二叉樹 二叉樹搜尋樹
package bst import j a.util.public class bst if pre.length 0 in.length 0 treenode root new treenode pre 0 for int i 0 i in.length i return root 判斷給定陣列...
二叉搜尋樹轉換為累加樹
給定乙個二叉搜尋樹 binary search tree 把它轉換成為累加樹 greater tree 使得每個節點的值是原來的節點值加上所有大於它的節點值之和。例如 輸入 二叉搜尋樹 5 2 13輸出 轉換為累加樹 18 20 13 分析 用乙個變數記錄累加值,用從右邊開始遍歷的中序遍歷,先右後根...
劍指offer 二叉樹 二叉搜尋樹的後序遍歷
輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。例如輸返回true 輸入返回false 1,利用二叉搜尋樹左 中 右的特性,和後序遍歷的特點 2,後序遍歷為左右根,則陣列末尾為根,然後依據大小找出左子樹和右子樹...