C 二叉樹相關操作

2021-10-10 13:07:21 字數 2843 閱讀 8165

c++實現二叉樹的相關操作,包括遞迴和非遞迴方式。

struct treenode 

};

遍歷順序:根左右。

遞迴方式

/**

* @description 前序遍歷(遞迴)

* @param root

* @return

*/void

preorderrecur

(treenode *root)

cout << root-

>val <<

" ";

// 前序遍歷當前結點

preorderrecur

(root-

>left)

;// 前序遍歷左子樹

preorderrecur

(root-

>right)

;// 前序遍歷右子樹

return

;}

非遞迴方式

/**

* @description 前序遍歷(非遞迴)

* @param root

* @return

*/void

preorderunrecur

(treenode* root)

stack> nstack;

nstack.

push

(root)

;while

(!nstack.

empty()

)if(root-

>left !=

nullptr)}

return

;}

遍歷順序:左根右。

遞迴方式

/**

* @description 中序遍歷(遞迴)

* @param root

* @return

*/void

inorderrecur

(treenode* root)

inorderrecur

(root-

>left)

;// 中序遍歷左子樹

cout << root-

>val <<

" ";

// 中序遍歷當前結點

inorderrecur

(root-

>right)

;// 中序遍歷右子樹

return

;}

非遞迴方式

/**

* @description 中序遍歷(非遞迴)

* @param root

* @return

*/void

inorderunrecur

(treenode* root)

stack> nstack;

while

(!nstack.

empty()

|| root !=

nullptr

)else

}return

;}

遍歷順序:左右根。

遞迴方式

/**

* @description 後序遍歷(遞迴)

* @param root

* @return

*/void

posorderrecur

(treenode* root)

posorderrecur

(root-

>left)

;// 後序遍歷左子樹

posorderrecur

(root-

>right)

;// 後序遍歷右子樹

cout << root-

>val <<

" ";

// 後序遍歷當前結點

return

;}

非遞迴方式

/**

* @description 後序遍歷(非遞迴)

* @param root

* @return

*/void

posorderunrecur

(treenode* root)

stack> nstack1, nstack2;

nstack1.

push

(root)

;while

(!nstack1.

empty()

)if(root-

>right !=

nullptr)}

while

(!nstack2.

empty()

)return

;}

遍歷順序:從上往下,每層從左往右。即廣度優先搜尋。

遞迴方式

非遞迴方式

/**

* @description 層次遍歷(非遞迴)

* @param root

* @return 層次遍歷vector

*/vector<

int>

bfs(treenode *root)

//返回的是乙個int的vector

q.push

(root)

;while

(!q.

empty()

)if(q.front()

->right !=

nullptr

) q.

pop();

//彈出第乙個元素

}return res;

}

二叉樹 二叉樹的相關操作

遞迴實現 建立求樹高 求葉子數 求節點數 統計度為2的結點個數 後序輸出 先序輸出 中序輸出 交換左右子樹 include include include define true 1 define false 0 define ok 1 define error 0 define overflow ...

二叉樹相關操作

include using namespace std typedef struct btnode btnode btnode newnode int value 非遞迴 btnode nodesearch btnode root,btnode parent,int value 遞迴 btnode ...

C 二叉樹的相關操作

include define maxsize 20 using namespace std typedef char telemtype 二叉樹的順序儲存表示 typedef struct sqbtree 二叉樹的二叉鍊錶表示 typedef struct node bitnode,bintree ...