c 學習之前序遞迴遍歷二叉樹和中序迴圈遍歷二叉樹

2021-06-27 02:57:41 字數 1912 閱讀 9986

例子簡單,不多說。近來手癢寫了一下。**如下:

簡單入門哦!!!

#include#includetemplate class cbinarytree

type* getrootnode() const

//初始化

void initbinarytree()

if(!bret)

}} //遞迴遍歷二叉樹

void iteratebinarytree(type *pnode)

if(pnode->m_prightnode!=null)

}//新增節點

bool addnode(type *pdestation,type *pnode,int nflag = 0)

else

}else

else

}m_nnodecount++;

return true;

} return false;

} //銷毀節點

void destroybinarytree(type *pnode)

if(pleftnode!=null)

if(prightnode!=null)

}//析構函式

virtual ~cbinarytree() };

class cnode

friend class cbinarytree;

virtual ~cnode() };

int main(int argc,char* argv)

中序 :使用迴圈遍歷二叉樹,使用資料結構的棧來存入讀出

#include#includetemplateclass cstact

~cstact() }

bool initstack(int nstacksize)

catch(...)

return true;

} bool push(type *pnode)//入棧

m_ptop++;//移動棧頂指標

memcpy(m_ptop,pnode,sizeof(type));

return true;

} bool pop(type *pnode)//出棧

memcpy(pnode,m_ptop,sizeof(type));

m_ptop--;

return true;

} bool gettop(type *pnode)

memcpy(pnode,m_ptop,sizeof(type));

return true;

} bool isempty() };

template class cbinarytree

type* getrootnode() const

//初始化

void initbinarytree()

if(!bret)

} }

void loopbinarytree()

}else

else

}else

else

}m_nnodecount++;

return true;

} return false;

} //銷毀節點

void destroybinarytree(type *pnode)

if(pleftnode!=null)

if(prightnode!=null)

}//析構函式

virtual ~cbinarytree() };

class cnode

friend class cbinarytree;

virtual ~cnode() };

int main(int argc,char* argv)

二叉樹之前序遍歷

題目 給出一棵二叉樹,返回其節點值的前序遍歷。您在真實的面試中是否遇到過這個題?yes 樣例給出一棵二叉樹,1 2 3返回 1,2,3 思路 首先建立向量ss和陣列s,以及定義top 1,當root!null或者top!1時,把root的值插入到ss中,top加1,讓s top 等於root,roo...

前序遍歷二叉樹

題目 給定乙個二叉樹,返回它的 前序 遍歷。示例 輸入 1,null,2,3 輸出 1,2,3 方法一 遞迴 這是最容易想到且最容易實現的演算法。definition for a binary tree node.struct treenode treenode int x val x left n...

二叉樹的前序遍歷(遞迴 迭代)

給定乙個二叉樹,返回它的前序遍歷。示例 輸入 1,null,2,3 1 2 3 輸出 1,2,3 高階 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?遞迴確實簡單,隨便寫乙個。definition for a binary tree node.public class treenode class ...