遞迴和迴圈兩種方法完成樹的映象轉換

2021-06-18 08:51:24 字數 1764 閱讀 9313

/*

題目:輸入一顆二元查詢樹,將該樹轉換為它的映象,即在轉換後的二元查詢樹中,左子樹的結點都大於右子樹的結點。 用遞迴和迴圈兩種方法完成樹的映象轉換。

例如: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...