二叉查詢樹轉雙向鍊錶(筆試)

2021-06-05 22:50:27 字數 1440 閱讀 6226

輸入一棵二元查詢樹,將該二元查詢樹轉換成乙個排序的雙向鍊錶。

要求不能建立任何新的結點,只能調整指標的指向

10/ \

6   14

/ \   / \

4    8 12 16

轉換後成雙向鍊錶

4<>6<>8<>10<>12<>14<>16。

#include #include #include using namespace std;

struct tree

};tree *maketree(int mydata)

void inserttree(int mydata, tree *&t)

else if(mydata >= t->data)else if(mydata < t->data)

inserttree(mydata, t->left);

else{}

}tree *treeroot, *tmp;

void visit(tree *t)

else

visit(t->right);

}void makelist(tree *t)

coutdeletetree(root->right);

delete root;

root = null;

}int main()

makelist(treeroot);

system("pause");

}

另外乙個題目:二叉查詢樹轉雙向鍊錶,不需要在原樹上操作。

#include #include #include using namespace std;

struct list

};struct tree

};tree *maketree(int mydata)

void inserttree(int mydata, tree *&t)

else if(mydata >= t->data)else if(mydata < t->data)

inserttree(mydata, t->left);

else{}

}list *list = null, *lst = null;

void visit(tree *root)

else

//coutvisit(root->right);

}void makelist(tree *root)

coutdeletetree(root->right);

delete root;

root = null;

}int main()

makelist(root);

system("pause");}/*

75 15 -30 10 -5 40 10

*/

二叉查詢樹轉雙向鍊錶JAVA實現

把二元查詢樹轉變成排序的雙向鍊錶 題目 輸入一棵二元查詢樹,將該二元查詢樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只調整指標的指向。10 6 14 4 8 12 16 轉換成雙向鍊錶 4 6 8 10 12 14 16。public class treenode public class...

二叉樹轉雙向鍊錶

include using namespace std 樹節點 struct node typedef struct node link 構造樹 void insert tree link h,int t if h val t insert tree h left,t else insert tre...

二叉樹轉雙向鍊錶

1.a 遞迴轉化左子樹為雙向鍊錶 1.b 找出根結點的前驅節點 是左子樹的最右的節點 1.c 將上一步找出的節點和根結點連線起來 2,如果右子樹不為null,處理右子樹 和上面的很類似 1.a 遞迴轉化右子樹為雙向鍊錶 1.b 找出根結點的後繼節點 是右子樹的最左的節點 1.c 將上一步找出的節點和...