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 ...