方法一: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後僅含乙個...