二叉樹遞迴非遞迴三序訪問,節點數,高度全操作

2021-08-10 12:44:13 字數 2575 閱讀 3632

二叉樹

判空遞迴=》find(),parent(),leftchild(),fan()

判空遞迴特殊版=》size(),height()

不判空遞迴=》三序,delete()

非遞迴實現=》三序,層次序,層次序列映象

bool型問題=》一般來說,遞迴不同於以上,需要另寫一函式遞迴=》&&用很多=》總結

#include

//遞迴1,中止條件2,空條件3,遞迴塊

//有返回值的,1,判空2,終止條件3,遞迴塊 如:find(),parent(),sum(),映象(),組合問題。

//又包含特殊性的,分解功能顯著=》遞迴加回溯,遞迴找到作用點,回溯解決問題。典型的就是size(),height(),跳台階,矩形覆蓋。

//void型的,直接if(root),比如三序遍歷,delete

#include

#include

using namespace std;

struct treenode

;treenode* initree()//建立頭結點

return(p);

}/* treenode* find1(treenode *root,int temp)//搜尋節點

else

else

else if(pt=find1(root->right,temp))

else}}

}*/treenode* find1(treenode *root,int temp)//搜尋節點

else

else}}

treenode * find2(treenode * root,int temp)//遞迴1,中止條件2,空條件3,遞迴塊

//又返回值的,需要驗證非空,void型的,直接if(root)

else

else}}

void add(treenode *root)//新增元素

}while(al!=1&&al!=2);}}

void visit(treenode* root)

void delete1(treenode* root)//全刪

}void firstpro(treenode*root)//先序

}void inpro(treenode*root)//中序

}void lastpro(treenode*root)//後序

}int size1(treenode*root)//節點數目

else

}void delete2(treenode*root,int temp)//定點刪除

int height(treenode*root)//高度或深度

else

else}}

bool reroot(treenode*root)//返回頭結點

else

}void leftget(treenode*root,int temp)//返回定點左孩子

void rightget(treenode*root,int temp)

/* treenode* parent(treenode*root,treenode *pt)

else

else}}

*/treenode * parent(treenode * root,int temp)

else

else}}

treenode* getroot(treenode*root)//像鍊錶傳頭指標指標一樣,沒有下表,只能遍歷,所以每個函式基本都需要傳root

/*void levelor(treenode*root)//層次序遍歷

if(p->right!=null)}}

*/void level(treenode * root)

if(p->right!=null)}}

/*void stackproor(treenode*root)//非遞迴前序

if(p->left!=null)}}

*/void fan(treenode * root)

if(p->right!=null)}}

/*void stackinpro(treenode*root)

if(!s.empty())}}

*/void stackinpro(treenode * root)

if(!s.empty())}}

void stackfirstpro(treenode * root)

if(p->left!=null)}}

void stacklastpro(treenode * root)

else}}

void laststack(treenode * root)

else

if(p->left!=null)}}

}void guangyi(treenode*root)

cout<<")";}}

}void display2(treenode*root,int level)

display2(root->right,level+1);

if(level!=1)

cout<<"_____";

}coutleft,level+1);

}int main()

二叉樹 遞迴 非遞迴

include include include include using namespace std typedef struct node bintree typedef struct node1 btnode void creatbintree char s,bintree root 建立二叉...

二叉樹的非遞迴訪問

include include using namespace std struct infor class test test test static int creattrees struct infor p,int k q word word q lchild null q rchild nu...

二叉樹遍歷(遞迴 非遞迴)

二叉樹以及對二叉樹的三種遍歷 先根,中根,後根 的遞迴遍歷演算法實現,以及先根遍歷的非遞迴實現。node public class node public node left public node right public object value 遍歷訪問操作介面 public inte ce ...