二叉樹相關操作(最全前中後遍歷 等)

2021-06-23 00:59:42 字數 2041 閱讀 5412

今天,突然看到二叉樹的來了興致,就把二叉樹的相關操作總結了一下!!  還望大家批評指正。

廢話不多說 來**:

#include"stdafx.h"

#include"stack.h"

void createtree(btree & t)

}//也可以用遍歷的方法記錄最大深度

int tree_depth(btree t)//樹的深度假如只有左子樹 則深度為左子樹深度+1,只有右子樹深度為右子樹深度+1,都有則為左右子樹深度最大者+1.

int leftd=tree_depth(t->left);

int rightd=tree_depth(t->right);

return (leftd > rightd) ? (leftd+1):(rightd+1); }

//判斷樹是否為平衡二叉樹(二叉樹中任意結點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。)

//採用後序遍歷的方法判斷每個節點的左右子樹是否滿足深度相差不超過1(並記錄),最後遍歷根節點從而判斷是否為平衡二叉樹

bool is_balance(btree t,int &deep)

int left=0;

int right=0;

if(is_balance(t->left,left)&&is_balance(t->right,right)) }

return false;

}bool is_balance_tree(btree t)

//前序遍歷

void inordertree(btree t)

btstack s;

create_stack(s);

btree p=t;

while(p!=nullptr||!isempty(s))

else

}}//中序遍歷(利用棧)

void midordertree_stack(btree t)

btstack s;

create_stack(s);

btree p = t;

while(p!=nullptr||!isempty(s))

else

}}//中序遍歷(不利用棧,利用子樹的右孩子指標)

void midordertree_nostack(btree t)

else

if(tr->right==nullptr)

else

} }}

//後序遍歷

void followuptree(btree t)

btstack s;

create_stack(s);

btree p = t;

btree pr=p;//設定pr指向彈出棧的元素,用於判斷p的右子樹已彈出該彈出 p

push(s,p);

p=p->left;

while(!isempty(s))//後續遍歷最後彈出根節點所以只判斷棧是否為空

else

else if(p->right==nullptr)

else

pr=p;

gettop(s,p);//取棧頂防止再讓其右孩子進棧

if(p->right!=pr)

}}

}}

以上是tree.cpp檔案內容 也是完成操作的主要呼叫函式。

下面是主函式:

#include "stdafx.h"

#includeusing namespace std;

#include"tree.h"

int _tmain(int argc, _tchar* argv){

btree t;

cout<

例如:如上圖輸入這個二叉樹:1 2 4 * * 5 7 * * * 3 * 6 * *

輸出為:

其他檔案 是一些函式宣告,樹,棧結構宣告和一些棧的操作。

二叉樹的遍歷(前中後)

總體來說分為遞迴和非遞迴實現 前序遍歷 二叉樹前序遍歷dlr public static void preorder treenode rootnode 前序非遞迴實現,借助棧,先進後出 param public static void preordernonrecursive treenode r...

二叉樹的迭代遍歷(前,中,後)

目錄 1 迭代方式的前序遍歷 2 迭代方式的中序遍歷 3 迭代方式的後續遍歷 class solution stacks new stack while root null s.isempty root s.peek s.pop root root.right return res 思路 採用棧作為...

二叉樹的前中後層遍歷

package com.data.tree public class bitree package com.data.tree classname treetest description todo author payphone date 2018年12月24日 下午1 44 07 version...