三種遍歷方式的非遞迴寫法
前序
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...