資料結構與演算法面試題 二叉查詢樹轉換成雙向鍊錶

2021-08-02 20:29:59 字數 871 閱讀 8821

題目**「資料結構與演算法面試題80道」。

問題分析:二叉查詢樹是一種二叉樹的結構,其中,根節點的值大於左子樹的值,小於右子樹的值。而二叉查詢樹的中序遍歷即為排序的結果。對於根節點,前驅指標指向左子樹中最大的節點,同理,後驅指標指向右子樹中最小的節點,如下圖所示:

樹是一種遞迴的結果,因此,對於左右子樹,也需要執行相同的操作。

方法:

bstreenode* convert(bstreenode *root)

convert(root->m_pleft);

bstreenode* p_left = root->m_pleft;

while(p_left->m_pright != null)

root->m_pleft = p_left;

p_left->m_pright = root;

convert(root->m_pright);

bstreenode* p_right = root->m_pright;

while(p_right->m_pleft != null)

root->m_pright = p_right;

p_right->m_pleft = root;

bstreenode *p = root;

while (null != p->m_pleft)

return p;

}

資料結構 二叉樹面試題(1)

pragma once include include include typedef char datatype typedef struct btreenode btreenode btreenode createnode datatype data btreenode createtree d...

資料結構 二叉樹面試題(2)

pragma once include include include typedef struct bstreenode bstreenode bstreenode createnode int data 如果存在,插入失敗返回 1,否則插入成功,返回 0 int insert bstreenod...

資料結構與演算法 二叉查詢樹

1.建立bst樹 往bst樹中新增節點 公開的介面函式 param node 需要新增到bst樹的那個節點 public void add treenode node else 隱藏的函式,add方法的具體實現 param parent bst樹 或者子樹 的根節點 param child 要插入b...