-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmorris_Inorder.h
More file actions
67 lines (49 loc) · 1.45 KB
/
morris_Inorder.h
File metadata and controls
67 lines (49 loc) · 1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#pragma once
#include <iostream>
#include <vector>
#include <stack>
#include <map>
#include <algorithm>
#include <list>
#include <queue>
#include <deque>
#include "TreeDefine.h"
using namespace std;
class CBinarySTree
{
public:
CBinarySTree(void);
virtual ~CBinarySTree(void);
bool Insert(int nvalue);
bool Delete(TreeNode* pNode);
//recur 遍历
void preOrder_traverse_recur(TreeNode* pTreeNode);
void inOrder_traverse_recur(TreeNode* pTreeNode);
void postOrder_traverse_recur(TreeNode* pTreeNode);
//morris 算法遍历
void morris_inorder(TreeNode* pTreeNode);
void morris_preOrder(TreeNode* pTreeNode);
void morris_postOrder(TreeNode* pTreeNode);
void PrintEdge(TreeNode* pTreeNode);
TreeNode* ReverseEdge(TreeNode* pTreeNode);
void Print(TreeNode* pTreeNode);
//迭代算法
std::vector<int> preorderTraversal(TreeNode* root);
std::vector<int> inorderTraversal(TreeNode* root);
std::vector<int> postorderTraversal(TreeNode* root); //145
//层次遍历
std::vector<int> LevelOrderTraversal(TreeNode* root);
//高度
int GetMinHeigth(TreeNode* root);
int GetMaxHeigth(TreeNode* root); //104
//层次遍历
std::vector<std::vector<int>> LevelOrder(TreeNode* root);
void help_LevelOrder(TreeNode* root, int nlevel, std::vector<std::vector<int>>& res);
public:
//判断二叉树是不是平衡二叉树
bool isBalance(TreeNode* pTreeNode); //110
protected:
int GetHeight(TreeNode* pTreeNode, int nLevel, bool &bResult);
private:
struct TreeNode * m_RootNode;
};