二叉樹的基本操作

2021-10-05 12:38:35 字數 2977 閱讀 6658

三種遍歷方式的非遞迴寫法

前序

class solution 

stack> tmp;

tmp.

push

(root)

;while

(!tmp.

empty()

)if(x->left)

}return res;}}

;

中序
class solution 

if(s.

size()

)}return res;}}

;

後序
class solution 

stack> tmp;

tmp.

push

(root)

;while

(!tmp.

empty()

)if(x->right)

}reverse

(res.

begin()

,res.

end())

;return res;}}

;

bintree.h
#pragma once 

#include

#include

#include

typedef

int btdatatype;

typedef

struct bintreenode

btnode;

void

preorder

(btnode* root)

;void

inorder

(btnode* root)

;void

postorder

(btnode* root)

;//獲取二叉樹中結點的個數

intgetnodecount

(btnode* root)

;//獲取二叉樹中葉子結點的個數

intgetleafcount

(btnode* root)

;//獲取第k層中結點的個數

intgetklevelcount

(btnode* root,

int k)

;//獲取二叉樹的高度

intgetheight

(btnode* root)

;//查詢結點

btnode*

find

(btnode* root, btdatatype x)

;//獲取雙親

btnode*

getparent

(btnode* root, btnode* pnode)

;//建立二叉樹,但是這種建立的方式並不是真正意義上建立二叉樹的方式

//這種建立的方式只是為了驗證所給的二叉樹中的方法是否正確

btnode*

createbintree()

;btnode*

buybintreenode

(btdatatype val)

;//測試

void

testbintree()

;

bintree.c
#include

"bintree.h"

//前序遍歷

void

preorder

(btnode* root)

}//中序遍歷

void

inorder

(btnode* root)

}//後序遍歷

void

postorder

(btnode* root)

}//求二叉樹中結點的個數

//思路就是,可以依據前序,中序,後序的思路

//遍歷的方法是遇到乙個結點就把哪個結點列印出來

//在這裡,可以看成是遇到乙個結點就給計數加一,從而可以算出來二叉樹中結點的個數

int count =0;

//用作計數

intgetnodecount

(btnode* root)

return count;}/*

不能使用count計數器的方式

*/int

getnodecountii

(btnode* root)

else

return1+

getnodecountii

(root->left)

+getnodecountii

(root->right);}

intgetleafcount

(btnode* root)

intgetheight

(btnode* root)

intgetklevelcount

(btnode* root,

int k)

btnode*

find

(btnode* root, btdatatype x)

btnode*

getparent

(btnode* root, btnode* pnode)

//建立二叉樹,但是不是真正意義上的建立二叉樹的方式

btnode*

createbintree()

//建立結點

btnode*

buybintreenode

(btdatatype val)

pnewnode->left =

null

; pnewnode->right =

null

; pnewnode->val = val;

return pnewnode;

}void

testbintree()

else

}

main.c
#include

"bintree.h"

intmain()

二叉樹基本操作

tree.h ifndef tree h define tree h include typedef int element 定義二叉樹 typedef struct nodetreenode void preorder treenode root 遞迴前序遍歷 void inorder treen...

二叉樹基本操作

一.二叉樹的定義 二.二叉樹的建立 定義一棵無資料的二叉樹 6 int left size 7 int right size 為了操作簡便,我們定義一棵不需要儲存資料的二叉樹,只要能儲存節點之間的邏輯關係就行,所以用兩個陣列來表示。left i 第i個節點的左子節點的序號 right i 第i個節點...

二叉樹基本操作

include include define maxsize 100 typedef char elemtype typedef struct node btnode void createbtnode btnode b,char str 由str串建立二叉鏈 j ch str j btnode f...