如何將乙個排序二叉樹轉換為迴圈雙向鍊錶

2021-07-03 10:47:22 字數 939 閱讀 1564

方法一:1.遞迴處理左子樹,得到乙個鍊錶

2.遞迴處理右子樹,得到乙個鍊錶

最終鍊錶=左子樹鍊錶+根節點+右子樹鍊錶

方法二:新建雙向迴圈鍊錶,通過中序遍歷排序二叉樹,依次獲得所有節點,並將節點存入新建的鍊錶,得到最終的雙向迴圈鍊錶。

#include

#include

<

stack

>

using namespace std;

struct treenode;};

treenode* createtree(treenode* root,treenode* node)

else

else

if(node->

data

data)

}return root;

}void print(treenode* root)

typedef struct trnode

trnode;

trnode* listtree(trnode*

list,treenode* node)

else

list

=lnode;

return

list;

}void printlist(trnode*

list)

}void printl(treenode*

list)

}void

join(treenode* node1,treenode* node2)

}treenode* linklist(treenode* root)

trnode* converttree(treenode* root)

else

}return

list;

}void main()

將二叉樹轉換為排序雙向鍊錶

對二叉樹進行中序遍歷,得到乙個排序的序列,然後調整樹節點的指標即可得到 版本1 非遞迴 treenode convert treenode prootoftree p stacktree.top stacktree.pop if flag else p p right return root 版本2...

將滿二叉樹轉換為求和樹

在網上看到乙個道題目覺的有些意思分享給大家。給滿出二叉樹,編寫演算法將其轉化為求和樹 什麼是求和樹 二叉樹的求和樹,是一顆同樣結構的二叉樹,其樹中的每個節點將包含原始樹中的左子樹和右子樹的和。二叉樹 10 2 6 8 4 7 5 求和樹 20 4 2 12 6 4 8 4 12 7 5 0 0 0 ...

樹轉換為二叉樹

輸入一顆普通有序樹,將它轉換為對應的二叉鍊錶儲存,然後輸出該二叉樹的先序和後序遍歷序列。包含多組測試資料。每組測試資料第1行為樹的結點個數n 1 n 26 接下來包含n行,其中第i行 1 n n 的資料依次為結點i的資料值ai 為乙個小寫字母 後面各元素為結點i的兒子序列,以0結束。若ai後僅含乙個...