例子簡單,不多說。近來手癢寫了一下。**如下:
簡單入門哦!!!
#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 ...