劍指Offer 面試題25 二叉搜尋樹與雙向鍊錶

2021-08-21 16:09:57 字數 838 閱讀 4449

題目:輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。

思路:主要利用非遞迴的中序遍歷的方式,將二叉搜尋樹進行中序遍歷

那麼,此時,二叉搜尋樹就成為乙個排序後的節點了,再將它們鏈結起來即可。

/*

題目:非遞迴的中序遍歷

思路:利用棧的資料結構,將左邊的節點依次存入棧中,利用棧的先進後出方法,將該最左邊的節點輸出後,

再判斷該節點是否有右子數,有的話,繼續上面操作,依次輸出即可。

**如下:

*/while (pnode != null || !treestack.empty())

if (!treestack.empty())

}

/*

題目:二叉搜尋樹與雙向鍊錶

*/class solution

stack

treestack;

treenode* pnode = prootoftree;

bool isfirst = true;

treenode* head;

treenode* ppre = null;

//非遞迴的中序遍歷

while (pnode != null || !treestack.empty())

if (!treestack.empty())

else

pnode = pnode->right;}}

return head;

}};

劍指offer面試題25

面試題25 二叉樹中和為某乙個值的路徑 二叉樹結點定義 struct binarytreenode 預備知識 vector中的push back是新增乙個元素 vector中的pop back是刪除乙個元素 二叉樹的操作 include stdafx.h include binarytree.h 建...

劍指Offer面試題 25 二叉搜尋樹與雙向鍊錶

題目 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。比如輸入下圖中左邊的二叉搜尋樹,則輸出轉換之後的排序雙向鍊錶。二叉搜尋樹的節點定義如下,這裡使用c 語言描述 public class binarytreenode public ...

《劍指Offer》面試題 平衡二叉樹

題目 輸入乙個二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。思路 用後序遍歷實現 先遍歷節點的左右子樹,左右子樹都平衡才來判斷該節點是否平衡,如果左右子樹中有不平衡的,則直接返回false,避免了從上往下逐個節點地計算深度帶來...