部分實現方式有些非原創,參考了他人思路。
使用c++中的類實現了二叉樹,並實現了風格統一的三種遞迴遍歷、三種迭代遍歷,以及層序遍歷。
水平有限,實現比較簡化。
//binarytree
#include#include#includeusing namespace std;
class btnode
btnode(double m_value=0.0)
~btnode()
void setleft(double m_value)
void setright(double m_value)
// int printself();
//三種非遞迴遍歷(棧)
int prego1();
int migo1();
int postgo1();
//層序遍歷 (佇列)
int levelgo();
//三種遞迴遍歷
int prego2();
int migo2();
int postgo2();
};int btnode::prego1()
if(visited)
} return 0;
}int btnode::migo1()
if(visited)
} return 0;
}int btnode::postgo1()
if(visited)
} return 0;
}int btnode::levelgo()
if(p->right!=null) }}
int btnode::prego2()
if(this->right!=null)
return 0;
}int btnode::migo2()
cout<
return 0;
}int btnode::postgo2()
if(this->right!=null)
cout<
root->setright(c);
root->left->setleft(d);
root->left->setright(e);
cout<
cout<
cout<
cout<
cout<
cout<
cout<
}
執行效果:
二叉樹及其實現
樹概念 節點n1到nk的路徑 為節點n1 n2 nk的乙個序列,是的對於1 i 路徑的長 路徑上邊的條數,如上面為k 1 ni的深度 從根到ni的唯一路徑的長。根的深度為0 ni的高度 從ni到一片葉子的最長路徑的長。樹葉的高度為0,一棵樹的高度等於根的高,通常定義空樹的高為 1 二叉樹的節點宣告 ...
二叉樹及其應用 二叉樹遍歷
給定二叉樹的廣義表表示,構造二叉樹並輸出二叉樹的四種遍歷順序。輸入說明 輸入僅一行,該行僅由 以及大小寫字元構成的二叉樹的廣義表表示,字串長度不超過100。輸出說明 在接下來的四行中依行輸出二叉樹的四種遍歷 輸入樣列 a b d,c e,f h 輸出樣列 abdcefh dbaecfh dbehfc...
二叉樹及其應用 二叉樹建立
給定二叉樹的資料型別如下 typedef char element struct node typedef struct node btnode typedef struct node btree 二叉樹建立i 完成btree create btree char s 函式,該函式由字串s建立一顆二叉...