/*
題目:輸入一顆二元查詢樹,將該樹轉換為它的映象,即在轉換後的二元查詢樹中,左子樹的結點都大於右子樹的結點。 用遞迴和迴圈兩種方法完成樹的映象轉換。
例如:8 8
/ \ 轉換 / \
6 10 --> 10 6
/ \ / \ / \ / \
5 7 9 11 11 9 7 5
*/#include
#include
#include
struct
bstreenode
; //建立二叉查詢樹
bstreenode * insertbstree(bstreenode * proot,int
value)
else
if(value < pparent->value)
pparent->left = pnode;
else
pparent->right = pnode;
} return
proot;
} //中序遍歷二叉樹
void
inorderbstree1(bstreenode * proot)
} void
inorderbstree(bstreenode * proot)
} else
} } }
//將二叉查詢樹轉換為它的映象,遞迴實現
void
bstree2mirrorrcur(bstreenode * proot)
//交換指標
bstreenode * tmp = proot->left;
proot->left = proot->right;
proot->right = tmp;
//遞迴左子樹
if(proot->left != null)
//遞迴右子樹
if(proot->right != null)
} //將二叉查詢樹轉換為它的映象,迴圈實現
void
bstree2mirror(bstreenode * proot)
} intmain(
intargs,
char
**argv)
; int
len =
sizeof
(array)/
sizeof
(int
);
//建立二叉查詢樹
bstreenode * proot = null;
for(
inti = 0;i < len;++i)
//中序遍歷二叉樹
inorderbstree(proot);
//將二叉查詢樹轉換為它的映象,遞迴實現
//bstree2mirrorrcur(proot);
//中序遍歷二叉樹
//inorderbstree(proot);
//將二叉查詢樹轉換為它的映象,迴圈實現
bstree2mirror(proot);
//中序遍歷二叉樹
inorderbstree(proot);
system("pause"
);
return
0;
}
製作winndows映象的兩種方法
兩種方法,一是在openstack平台外製作,在建立openstack映象時上載,二是直接在openstack?glance所在機器上製作再上載。第一種方法可以我這是在我桌面電腦win10上安裝vmware workstation,裡面安裝linux desktop,在ubuntu desktop裡...
ORACLE 遞迴查詢的兩種方法。
1.我們建乙個表 test2 舉例說明 oracle 遞迴查詢的兩種方法。資料結構如下 2.我們的目標是查詢a1下面所有的子節點和所處層級。a.通用做法 寫乙個遞迴sql 如下 select t.level from test2 t start with t.father a1 connect by...
C 減少巢狀迴圈的兩種方法
目錄 當然,除了關注明顯的迴圈例如for foreach,還應該關注隱晦一點的迴圈,例如datatable.select linq之類的list.where list.find等。要優化,排除業務問題,要考慮的就是 技術了。看到迴圈查詢資料,盡可能向dictionary靠攏。優化前 using sy...