亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? bst_path.cpp

?? 二叉搜索樹求每個(gè)結(jié)點(diǎn)到根節(jié)點(diǎn)的路徑 非遞歸的先序
?? CPP
字號:
// BST_path.cpp : 定義控制臺應(yīng)用程序的入口點(diǎn)。
//
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <stack>
#include <queue>
using namespace std;

class Node
{
public:
	Node(int data= 0, Node *l= NULL, 
		Node *r= NULL, Node *p= NULL) {        //構(gòu)造函數(shù)
		info= data;
		Lchild= l;
		Rchild= r;
		Parent= p;
	}

	int info;
	Node *Lchild;
	Node *Rchild;
	Node *Parent;
};
class BSTree : public Node
{
public:
	BSTree() {         
		root= NULL;
	}
	~BSTree() {        //析構(gòu)函數(shù),釋放內(nèi)存
		clear(root);
		root= NULL;
	}

	void insert(int &ele);        //插入ele信息的結(jié)點(diǎn)
	//創(chuàng)建中序排序的二叉搜索樹
	void Buildtree(vector<int> &vint, int first, int last);
	void clear() {
		clear(root);
	}
	void iterative_preorder();   //非遞歸的先序遍歷
	void iterative_inorder();     //非遞歸的中序遍歷
	void iterative_postorder();   //非遞歸的后序遍歷
	void breadthfirst();         //廣度優(yōu)先遍歷
	void path() {                //尋找每個(gè)結(jié)點(diǎn)到根節(jié)點(diǎn)的路徑
		path(root);
	}
protected:
	Node *root;
	void path(Node *p);
	void visit(Node *p);
	void clear(Node *p);
	
};

void BSTree::insert(int &ele)
{
	Node *p= root, *prep=NULL;
	while (p!= NULL) {
		prep=p;
		if (p->info > ele)
			p= p->Lchild;
		else
			p= p->Rchild;
	}
	if (root== NULL)        //根節(jié)點(diǎn)為空
		root= new Node(ele);
	else if (prep->info > ele) {    //ele小于prep->info,放在prep的左邊
		p= prep->Lchild= new Node(ele);
		p->Parent= prep;
	}
	else {                          //ele大于prep->info,放在右邊
		p= prep->Rchild= new Node(ele);
		p->Parent= prep;
	}
}

void BSTree::Buildtree(vector<int> &vint, int first, int last)
{
	if (first<= last) {
		int mid= (first+ last)/2;
		insert( vint.at(mid) );
		Buildtree(vint, first, mid-1);
		Buildtree(vint, mid+1, last);
	}
}

void BSTree::clear(Node *p)
{
	if (p) {
		clear (p->Lchild);
		clear (p->Rchild);
		delete p;
	}
}

void BSTree::iterative_preorder()
{
	stack<Node *> BSTstack;
	Node *p= root;
	if (p!= NULL) {
		BSTstack.push(p);

		while (!BSTstack.empty()) {
			p= BSTstack.top();
			BSTstack.pop();
			visit(p);
			if (p->Rchild!= NULL) 
				BSTstack.push(p->Rchild);  //first rchild....then lchild
			if (p->Lchild!= NULL)
				BSTstack.push(p->Lchild);
		}
	}
}

void BSTree::iterative_inorder()
{
	stack<Node *> BSTstack;
	Node *p= root;

	while (p!= NULL) {
		while (p!= NULL) {
			if (p->Rchild)
				BSTstack.push(p->Rchild);
			BSTstack.push(p);
			p= p->Lchild;
		}
		p= BSTstack.top(); BSTstack.pop();

		while (!BSTstack.empty() && p->Rchild==NULL) {
			visit (p);
			p= BSTstack.top(); BSTstack.pop();
		}
		visit (p);                 //p->rchild不為空時(shí)

		if (!BSTstack.empty()) {   //返回p的上一層
			p= BSTstack.top(); 
			BSTstack.pop();
		}
		else
			p=NULL;
	}
}

void BSTree::iterative_postorder()
{
	stack<Node *> BSTstack;
	Node *p= root, *q= root;

	while (p!= NULL) {
		for (; p->Lchild!= NULL; p=p->Lchild) 
			BSTstack.push(p);

		while (p && (p->Rchild== NULL || p->Rchild== q) ) {
			visit(p);
			q= p;
			if (BSTstack.empty())
				return;

			p= BSTstack.top(); BSTstack.pop();   //p返回到上一層
		}    //p->Rchild=NULL,或p->Rchild=q(既已經(jīng)遍歷過),退出循環(huán)
		BSTstack.push(p);   //再壓入p,并從p的右邊進(jìn)行遍歷
		p= p->Rchild;
	}
}

void BSTree::breadthfirst()
{
	queue<Node *> BSTqueue;
	Node *p= root;
	if (p) {
		BSTqueue.push(p);
		while (!BSTqueue.empty()) {
			p= BSTqueue.front(); 
			BSTqueue.pop();
			visit(p);
			if (p->Lchild)   //從左->右進(jìn)入隊(duì)列
				BSTqueue.push(p->Lchild);
			if (p->Rchild)
				BSTqueue.push(p->Rchild);
		}
	}
}

void BSTree::path(Node *p)
{
	Node *q= p;
	while (q!= NULL) {
		cout <<q->info <<" ";
		q= q->Parent;
	}
	cout <<endl;

	if (p->Lchild!= NULL)
		path(p->Lchild);
	if (p->Rchild!= NULL)
		path(p->Rchild);
}

void BSTree::visit(Node *p)
{
	cout <<p->info <<" ";
}



void main()
{
	vector<int> vint;
	int ch;
	cout <<"依次輸入結(jié)點(diǎn)的信息:" <<endl;
	while (cin >>ch) {
		vint.push_back(ch);
	}
	BSTree tree;
	tree.Buildtree(vint, 0, vint.size()-1);
	cout <<"*******************************" <<endl;

	cout <<"非遞歸---先序遍歷:" <<endl;
	tree.iterative_preorder();
	cout <<endl <<"*******************************" <<endl;

	cout <<"非遞歸---中序遍歷:" <<endl;
	tree.iterative_inorder();
	cout <<endl <<"*******************************" <<endl;

	cout <<"非遞歸---后序遍歷:" <<endl;
	tree.iterative_postorder();
	cout <<endl <<"*******************************" <<endl;

	cout <<"廣度優(yōu)先遍歷:" <<endl;
	tree.breadthfirst();
	cout <<endl <<"*******************************" <<endl;
	
	cout <<"從上至下,從左至右,每個(gè)結(jié)點(diǎn)到根節(jié)點(diǎn)的路徑:" <<endl;
	tree.path();
	cout <<endl <<"*******************************" <<endl;

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线看不卡av| 亚洲bt欧美bt精品| 国产精品99久久久久久久vr| 日韩一二三四区| 国产一区二区调教| 欧美激情一区二区| 99re8在线精品视频免费播放| 一色桃子久久精品亚洲| 色综合久久综合网97色综合 | 亚洲三级理论片| 日本精品免费观看高清观看| 亚洲国产日韩综合久久精品| 欧美日韩一级二级三级| 久久精品999| 国产精品素人一区二区| 91极品美女在线| 婷婷综合久久一区二区三区| 久久综合网色—综合色88| 国产成人免费xxxxxxxx| 玉米视频成人免费看| 日韩情涩欧美日韩视频| 成人综合在线观看| 亚洲国产日韩一级| 久久亚洲综合色| 99久久国产综合精品麻豆| 婷婷开心久久网| 久久精品夜色噜噜亚洲aⅴ| www.亚洲精品| 日本中文一区二区三区| 中文字幕av免费专区久久| 欧美在线你懂的| 国产一区二区0| 亚洲尤物视频在线| 国产日韩欧美综合一区| 欧美色网站导航| 国产美女主播视频一区| 一区二区三区在线观看视频| 亚洲精品在线三区| 在线观看成人小视频| 精品无人区卡一卡二卡三乱码免费卡| 中文字幕一区二区三区不卡| 日韩一区二区三区免费观看| 成人av综合一区| 日本亚洲视频在线| 一区二区三区资源| 久久婷婷综合激情| 欧美福利一区二区| 91在线无精精品入口| 久久草av在线| 日韩综合在线视频| 亚洲美女视频在线| 国产片一区二区| 欧美一区二区三区不卡| 日本久久精品电影| 成人丝袜视频网| 久久99久久精品| 日韩avvvv在线播放| 亚洲影院理伦片| 国产精品久久久久久久久搜平片 | 欧美色综合天天久久综合精品| 国产91精品久久久久久久网曝门| 日本视频免费一区| 亚洲国产你懂的| 亚洲特级片在线| 中文字幕在线免费不卡| 国产欧美日韩精品在线| 精品国产91亚洲一区二区三区婷婷 | 欧美午夜片在线观看| 99riav一区二区三区| 国产激情视频一区二区在线观看| 精品一区二区三区蜜桃| 蜜桃视频在线观看一区| 日本午夜精品一区二区三区电影| 天天影视涩香欲综合网| 午夜婷婷国产麻豆精品| 偷拍亚洲欧洲综合| 日本v片在线高清不卡在线观看| 亚州成人在线电影| 日韩综合在线视频| 丝袜美腿成人在线| 日本中文字幕一区| 久久99国产精品久久| 久久精品国产99久久6| 极品少妇一区二区三区精品视频 | 国产福利91精品一区二区三区| 久久精品久久综合| 久久精品免费看| 国产福利91精品| 91蝌蚪国产九色| 欧美日韩国产大片| 日韩你懂的电影在线观看| 日韩欧美一级二级三级久久久| 久久久美女毛片| 亚洲欧洲99久久| 亚洲成人免费视| 国产在线不卡一卡二卡三卡四卡| 国产精品一卡二卡| 成人性视频免费网站| 在线中文字幕一区二区| 欧美一区二区三区男人的天堂| 91精品国产福利| 日韩午夜在线观看视频| 欧美一卡二卡在线观看| 欧美在线制服丝袜| 日韩欧美一二区| 久久你懂得1024| 中文字幕免费一区| 亚洲三级电影网站| 亚洲精品日日夜夜| 日韩和欧美的一区| 久久不见久久见免费视频1| 国产精品一级在线| 99精品国产视频| 国v精品久久久网| 欧美在线色视频| 欧美一区二区在线播放| 久久久高清一区二区三区| 中文字幕免费在线观看视频一区| 亚洲欧美在线aaa| 日韩av成人高清| 大白屁股一区二区视频| 91蝌蚪porny| 在线播放视频一区| 久久久久久麻豆| 亚洲综合一区在线| 另类成人小视频在线| 成人丝袜视频网| 欧美精品三级日韩久久| 精品福利一区二区三区免费视频| 亚洲国产电影在线观看| 亚洲影视资源网| 国产一区二区三区| 色综合久久中文综合久久97 | kk眼镜猥琐国模调教系列一区二区 | 欧美一级高清大全免费观看| 久久精品在线观看| 亚洲综合一区二区三区| 免费欧美日韩国产三级电影| 91看片淫黄大片一级在线观看| 日韩一区二区三免费高清| 国产精品久久久久久久蜜臀| 亚洲高清视频在线| 国产成人在线网站| 在线观看91av| 国产精品国产三级国产a| 日韩精品免费专区| 成人免费电影视频| 日韩视频免费观看高清完整版| 国产精品成人免费| 久久精品国产999大香线蕉| 在线免费观看日韩欧美| 久久综合色综合88| 天堂蜜桃91精品| 99精品热视频| 久久免费视频色| 日韩精品三区四区| 在线视频欧美精品| 国产精品久久久久天堂| 久久99精品国产.久久久久久| 日韩久久精品一区| 亚洲视频图片小说| 国产精品一区二区免费不卡 | 欧美久久一区二区| ...av二区三区久久精品| 国内成+人亚洲+欧美+综合在线 | 精品国内片67194| 亚洲电影一区二区三区| 在线观看成人小视频| 中文字幕一区免费在线观看| 天天综合日日夜夜精品| 欧美亚洲一区二区三区四区| 综合在线观看色| 国产精品综合av一区二区国产馆| 日韩欧美成人午夜| 日韩黄色免费电影| 欧美精品丝袜中出| 五月婷婷综合激情| 91精品国产综合久久久蜜臀粉嫩 | 欧美艳星brazzers| 亚洲精品国产无天堂网2021| 9久草视频在线视频精品| 亚洲国产精品ⅴa在线观看| 91蜜桃传媒精品久久久一区二区| 国产日韩欧美制服另类| 国产一区二区导航在线播放| 精品精品欲导航| 日本视频中文字幕一区二区三区| 欧美刺激午夜性久久久久久久| 日韩av一区二区在线影视| 欧美日韩亚洲综合一区 | 精品国产乱码久久久久久图片 | 亚洲mv在线观看| 欧美日韩国产首页在线观看| 亚洲高清免费视频| 欧美日韩国产综合一区二区| 丝袜诱惑制服诱惑色一区在线观看| 欧美日韩精品欧美日韩精品| 热久久久久久久| 精品999在线播放| 九九国产精品视频|